3 つのリストがあります。1 つ目は名前のリスト、2 つ目は辞書のリスト、3 つ目はデータのリストです。リスト内の各位置は、他のリスト内の同じ位置に対応しています。List_1[0] には、List_2[0] と List_3[0] などに対応するデータがあります。List_1 の値を主キーとして、これら 3 つのリストを辞書内の辞書に変換したいと思います。すべてを順番に保ちながらこれを行うにはどうすればよいですか?
1394 次
3 に答える
13
>>> a = [1,2,3]
>>> b = [4,5,6]
>>> c = [7,8,9]
>>> dict(zip(a, zip(b, c)))
{1: (4, 7), 2: (5, 8), 3: (6, 9)}
の詳細については、ドキュメントを参照してくださいzip
。
lionbest が以下で指摘しているように、itertools.izip()
入力データが大きいかどうかを確認することをお勧めします。izip
基本的に と同じことをzip
行いますが、リストの代わりに反復子を作成します。この方法では、ディクショナリを作成する前に大きな一時リストを作成しません。
于 2009-08-05T12:27:35.123 に答える
1
パイソン 3:
combined = {name:dict(data1=List_2[i], data2=List_3[i]) for i, name in enumerate(List_1)}
パイソン 2.5:
combined = {}
for i, name in enumerate(List_1):
combined[name] = dict(data1=List_2[i], data2=List_3[i])
于 2009-08-05T12:28:07.727 に答える
0
これらの順序が重要な場合は、辞書を使用しないでください。定義上、それらは順不同です。多くのordered_dictionary実装の1つを使用するか、コレクションモジュールに順序付けられた辞書実装が含まれるpython 2.7または3.1を待つことができます。
于 2009-08-05T16:33:25.113 に答える