2012-02-11 10 views
1

iteritems()またはkeys()を使用して辞書をトラバースすることは可能です。しかし、もし私がl = [{'a': 1}, {'b': 2}, {'c': 3}]のようなdicsのリストを持っていて、そのキーを使って文字列を構成したいとしたらどうでしょうか?例えばs = 'a, b, c'Python辞書でキーにアクセスする方法

解決策の1つは、すべてのキーをリストにあらかじめコピーしておきたい文字列を作成することです。よりよい解決策があるかどうか疑問に思うだけです。

+0

@GregS:これは、この質問に関するものではありません。 –

+0

@GregS辞書のリストです。辞書には複数の項目が含まれていません – clwen

+0

@NiklasB。どうやってそんなに確かめることができますか?記述にはdicsのリストがありますが、その例は単一のdictです。 –

答えて

8

itertools.chain()を使用して、それを繰り返し使用することができますdictの上でそのキーを生成します。

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

これは、複数の要素を持つdictsもあります。

あなたがセットを使用し、重複した要素を必要としない場合:

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

+1、本当にきれいです。 –

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]) 

あなたが引用符の内側にしたい任意の区切り文字を入れることができます。辞書は発注されていないことを覚えておいてください。その結果、あなたは奇妙な文字列を得るかもしれません。