如何将列表转换为字典并连接值?

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中完成呢?

lno*_*eir 5

做这个:

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)