web-dev-qa-db-ja.com

キーと値のタプルのリストを辞書に変換する方法は?

次のようなリストがあります。

[('A', 1), ('B', 2), ('C', 3)]

私はそれを次のような辞書に変えたいです:

{'A': 1, 'B': 2, 'C': 3}

これについて行く最善の方法は何ですか?

編集:タプルの私のリストは実際にはもっと似ています:

[(A, 12937012397), (BERA, 2034927830), (CE, 2349057340)]
115
Fred Wilson

これにより、リストを分割してZipしようとするのと同じエラーが発生します。 ValueError:辞書更新シーケンス要素#0の長さは1916です。 2が必要です

それがあなたの実際の質問です。

答えは、リストの要素はあなたが思っているものではないということです。 myList[0]と入力すると、リストの最初の要素が2タプルではないことがわかります。 ('A', 1)ですが、1916長の反復可能です。

実際元の質問(myList = [('A',1),('B',2),...])で述べた形式のリストを作成したら、必要なことはdict(myList)だけです。

83
ninjagecko
>>> dict([('A', 1), ('B', 2), ('C', 3)])
{'A': 1, 'C': 3, 'B': 2}
152
Andreas Jung

これを試しましたか?

>>> l=[('A',1), ('B',2), ('C',3)]
>>> d=dict(l)
>>> d
{'A': 1, 'C': 3, 'B': 2}
28
Useless

重複するタプル「キー」を処理する方法は次のとおりです。

# 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]}
4
Tam Le

リスト内包表記を使用する別の方法、

>>> t = [('A', 1), ('B', 2), ('C', 3)]
>>> d = [{ i:j for i,j in t }]
>>> d
[{'A': 1, 'C': 3, 'B': 2}]
0
Arun