2017-10-06 12 views
2

リストのリストがあり、リストから辞書を作成しようとしています。私はこの方法を使ってそれを行う方法を知っています。 Creating a dictionary with list of lists in PythonリストのリストからDict Comprehension python

私がしようとしているのは、最初のリストの要素をキーとして使用し、同じインデックスを持つ残りのアイテムを値のリストにすることです。しかし、私はどこから始めるべきか分かりません。 「

result_dict = dict(zip(example_list[0], zip(*example_list[1:]))) 

そうでない場合は、あなたを:各リストは同じ長さですが、あなたはそれが二回zipを使用するのと同じくらい簡単です、タプル対リストを気にしない場合は、リストの長さは

exampleList = [['first','second','third'],['A','B','C'], ['1','2','3']] 

resultDict = {'first':['A','1'],'second':['B','2'],'third':['C','3']} 

答えて

1

exampleListは、任意の長さにすることができたときに...

exampleList = [['first','second','third'],['A','B','C'], ['1','2','3'],[4,5,6]] 

z=list(zip(*exampleList[1:])) 
d={k:list(z[i]) for i,k in enumerate(exampleList[0])} 
print(d) 

出力

{'first': ['A', '1', 4], 'second': ['B', '2', 5], 'third': ['C', '3', 6]} 
+1

場合の世話をするリストの長さはので、私はちょうど記述にあることを追加しました変更することができます。 – mickNeill

1

を変えますmapへの呼び出しに貫通する必要があるでしょう:

result_dict = dict(zip(example_list[0], map(list, zip(*example_list[1:])))) 
0

zip機能は、あなたが探しているものかもしれません。

exampleList = [['first','second','third'],['A','B','C'], ['1','2','3']] 
d = {x: [y, z] for x, y, z in zip(*exampleList)} 
print(d) 
#{'first': ['A', '1'], 'second': ['B', '2'], 'third': ['C', '3']} 
2

zip(*exampleList)を使用して値をアンパックし、キー値ペアを使用して辞書を作成します。

dicta = {k:[a, b] for k, a, b in zip(*exampleList)} 
print(dicta) 
# {'first': ['A', '1'], 'second': ['B', '2'], 'third': ['C', '3']} 

よりもしリスト:最初の要素とのマッピングを取得するためのdictの理解が続く

dicta = {k:[*a] for k, *a in zip(*exampleList)} 
# {'first': ['A', '1', 4], 'second': ['B', '2', 5], 'third': ['C', '3', 6]} 
3

開梱とzipを使用しては読みやすいようです。

result_dict = {first: rest for first, *rest in zip(*exampleList)} 
関連する問題