2012-02-11 50 views
1

我知道可以使用iteritems()keys()遍歷字典。但是如果我得到了一個如下列的詞彙表:l = [{'a': 1}, {'b': 2}, {'c': 3}],我想用它的鍵組成一個字符串,例如s = 'a, b, c'如何在Python字典中訪問密鑰

一個解決方案是預先將所有密鑰複製到列表中,然後組成我想要的字符串。只是想知道是否有更好的解決方案。

+0

@GregS:這不是什麼問題。 – 2012-02-11 16:29:22

+0

@GregS這是一個詞典列表,不是包含多個項目的字典 – clwen 2012-02-11 16:29:47

+0

@NiklasB。你怎麼能這麼肯定?說明中列出了dics的例子,但這個例子是單個字典。 – 2012-02-11 16:43:40

回答

8

您可以使用itertools.chain(),並利用迭代的事實通過一個字典將會產生它的鑰匙。

import itertools 
lst = [{'a': 1}, {'b': 2}, {'c': 3}] 
print ', '.join(itertools.chain(*lst)) 

這也適用於它有超過一個元素的字典。

如果你不想重複元素,使用一組:

print ', '.join(set(itertools.chain(*lst))) 
+1

+1,真的很乾淨。 – 2012-02-11 16:39:24

1

假設每個字典只會有一個關鍵:

', '.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' 
0

遍歷字典,然後在每個字典的鍵:

>>> lst = [{'a': 1}, {'b': 2}, {'c': 3}] 
>>> ', '.join(key for dct in lst for key in dct.keys()) 
'a, b, c' 
0

試試這個:

''.join([i.keys()[0] for i in l]) 

你可以把你想要的任何分隔符的引號內。只要記住字典沒有排序,所以你可能會看到奇怪的字符串。

相關問題