如何将键值元组列表转换为字典?

Fre*_*son 118 python dictionary list

我有一个看起来像这样的列表:

[('A', 1), ('B', 2), ('C', 3)]
Run Code Online (Sandbox Code Playgroud)

我想把它变成一个看起来像的字典:

{'A': 1, 'B': 2, 'C': 3}
Run Code Online (Sandbox Code Playgroud)

最好的方法是什么?

编辑:我的元组列表实际上更像是:

[(A, 12937012397), (BERA, 2034927830), (CE, 2349057340)]
Run Code Online (Sandbox Code Playgroud)

小智 155

>>> dict([('A', 1), ('B', 2), ('C', 3)])
{'A': 1, 'C': 3, 'B': 2}
Run Code Online (Sandbox Code Playgroud)

  • 还评论了另一个暗示相同的答案:这不包括重复的元组'键',例如:`l = [('A',1),('B',2),('C',3) ,('A',2)]`将导致''A':1`,这可能不是理想的结果. (5认同)

nin*_*cko 85

这给了我与尝试拆分列表并压缩它相同的错误.ValueError:字典更新序列元素#0的长度为1916; 2是必需的

那是你的实际问题.

答案是列表中的元素不是您认为的那些元素.如果你输入,myList[0]你会发现列表的第一个元素不是两元组,例如('A', 1),而是一个1916长度的可迭代元素.

一旦您确实在原始问题(myList = [('A',1),('B',2),...])中列出的表格中列出了清单,您需要做的就是dict(myList).


Use*_*ess 30

你试过这个吗?

>>> l=[('A',1), ('B',2), ('C',3)]
>>> d=dict(l)
>>> d
{'A': 1, 'C': 3, 'B': 2}
Run Code Online (Sandbox Code Playgroud)

  • 这不包括具有重复的元组“键”,例如:'l = [('A',1),('B',2),('C',3),('A',2)]'`将导致结果为'A':1',这可能不是理想的结果。 (2认同)

Tam*_* Le 7

这是处理重复的元组“键”的方法:

# 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]}
Run Code Online (Sandbox Code Playgroud)


小智 5

如果 Tuple 没有键重复,则它很简单。

tup = [("A",0),("B",3),("C",5)]
dic = dict(tup)
print(dic)
Run Code Online (Sandbox Code Playgroud)

如果元组有键重复。

tup = [("A",0),("B",3),("C",5),("A",9),("B",4)]
dic = {}
for i, j in tup:
    dic.setdefault(i,[]).append(j)
print(dic)
Run Code Online (Sandbox Code Playgroud)