次のようなリストがあります。
[('A', 1), ('B', 2), ('C', 3)]
私はそれを次のような辞書に変えたいです:
{'A': 1, 'B': 2, 'C': 3}
これについて行く最善の方法は何ですか?
編集:タプルの私のリストは実際にはもっと似ています:
[(A, 12937012397), (BERA, 2034927830), (CE, 2349057340)]
これにより、リストを分割してZipしようとするのと同じエラーが発生します。 ValueError:辞書更新シーケンス要素#0の長さは1916です。 2が必要です
それがあなたの実際の質問です。
答えは、リストの要素はあなたが思っているものではないということです。 myList[0]
と入力すると、リストの最初の要素が2タプルではないことがわかります。 ('A', 1)
ですが、1916長の反復可能です。
実際元の質問(myList = [('A',1),('B',2),...]
)で述べた形式のリストを作成したら、必要なことはdict(myList)
だけです。
>>> dict([('A', 1), ('B', 2), ('C', 3)])
{'A': 1, 'C': 3, 'B': 2}
これを試しましたか?
>>> l=[('A',1), ('B',2), ('C',3)]
>>> d=dict(l)
>>> d
{'A': 1, 'C': 3, 'B': 2}
重複するタプル「キー」を処理する方法は次のとおりです。
# An example
l = [('A', 1), ('B', 2), ('C', 3), ('A', 5), ('D', 0), ('D', 9)]
# A solution
d = dict()
[d [t [0]].append(t [1]) if t [0] in list(d.keys())
else d.update({t [0]: [t [1]]}) for t in l]
d
OUTPUT: {'A': [1, 5], 'B': [2], 'C': [3], 'D': [0, 9]}
リスト内包表記を使用する別の方法、
>>> t = [('A', 1), ('B', 2), ('C', 3)]
>>> d = [{ i:j for i,j in t }]
>>> d
[{'A': 1, 'C': 3, 'B': 2}]