我知道可以使用iteritems()
或keys()
遍歷字典。但是如果我得到了一個如下列的詞彙表:l = [{'a': 1}, {'b': 2}, {'c': 3}]
,我想用它的鍵組成一個字符串,例如s = 'a, b, c'
?如何在Python字典中訪問密鑰
一個解決方案是預先將所有密鑰複製到列表中,然後組成我想要的字符串。只是想知道是否有更好的解決方案。
我知道可以使用iteritems()
或keys()
遍歷字典。但是如果我得到了一個如下列的詞彙表:l = [{'a': 1}, {'b': 2}, {'c': 3}]
,我想用它的鍵組成一個字符串,例如s = 'a, b, c'
?如何在Python字典中訪問密鑰
一個解決方案是預先將所有密鑰複製到列表中,然後組成我想要的字符串。只是想知道是否有更好的解決方案。
您可以使用itertools.chain()
,並利用迭代的事實通過一個字典將會產生它的鑰匙。
import itertools
lst = [{'a': 1}, {'b': 2}, {'c': 3}]
print ', '.join(itertools.chain(*lst))
這也適用於它有超過一個元素的字典。
如果你不想重複元素,使用一組:
print ', '.join(set(itertools.chain(*lst)))
+1,真的很乾淨。 – 2012-02-11 16:39:24
假設每個字典只會有一個關鍵:
', '.join(a.keys()[0] for a in l)
如果不是,也許是這樣的:
>>> l = [{'a': 1, 'd': 4}, {'b': 2}, {'c': 3}]
>>> ', '.join(', '.join(a.keys()) for a in l)
'a, d, b, c'
遍歷字典,然後在每個字典的鍵:
>>> lst = [{'a': 1}, {'b': 2}, {'c': 3}]
>>> ', '.join(key for dct in lst for key in dct.keys())
'a, b, c'
試試這個:
''.join([i.keys()[0] for i in l])
你可以把你想要的任何分隔符的引號內。只要記住字典沒有排序,所以你可能會看到奇怪的字符串。
@GregS:這不是什麼問題。 – 2012-02-11 16:29:22
@GregS這是一個詞典列表,不是包含多個項目的字典 – clwen 2012-02-11 16:29:47
@NiklasB。你怎麼能這麼肯定?說明中列出了dics的例子,但這個例子是單個字典。 – 2012-02-11 16:43:40