arx*_*ris 1 python dictionary list python-3.x
我有一个包含架构的列表,如下所示:
list=[('a',2),('b',4),('a',1),('c',6)]
Run Code Online (Sandbox Code Playgroud)
我想做的是将每对的第一个值作为键将其转换为字典,我还希望将具有相同键的对连接起来。对于上面的结果将是:
dict={ 'a':[2,1] , 'b':[4] , 'c':[6] }
Run Code Online (Sandbox Code Playgroud)
我不关心连接值的顺序,这意味着我们也可以有'a':[1,2].
这怎么能在Python中完成呢?
做这个:
l = [('a',2),('b',4),('a',1),('c',6)]
d = {}
for item in l:
if item[0] in d:
d[item[0]].append(item[1])
else:
d[item[0]] = [item[1]]
print(d) # {'a': [2, 1], 'b': [4], 'c': [6]}
Run Code Online (Sandbox Code Playgroud)
为了使它更干净,你可以使用defaultdict和 2 个for迭代器:
from collections import defaultdict
l = [('a',2),('b',4),('a',1),('c',6)]
d = defaultdict(lambda: [])
for key, val in l:
d[key].append(val)
print(dict(d)) # {'a': [2, 1], 'b': [4], 'c': [6]})
Run Code Online (Sandbox Code Playgroud)