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



我有一个模式列表,如下所示:

list=[('a',2),('b',4),('a',1),('c',6)]

我想做的是将其转换为使用每对的第一个值作为键的字典,我还想将具有相同键的对连接起来。对于上面的结果将是:

dict={ 'a':[2,1] , 'b':[4] , 'c':[6]  }

我不关心连接值的顺序,这意味着我们也可以有'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]}

为了更简洁,你可以使用defaultdict和2for迭代器:

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]})

您也可以在dict上使用setdefault方法,如果键尚未在字典中,则将列表设置为默认条目:

l=[('a',2),('b',4),('a',1),('c',6)]
d = {}
for k, v in l:
d.setdefault(k, []).append(v)
d
{'a': [2, 1], 'b': [4], 'c': [6]}

相关内容

  • 没有找到相关文章

最新更新