Python 如何将两个列表合并到字典中,并对重复键的值求和
我试图构建一个函数,将两个列表合并到一个字典中,但“key”列表包含重复项。我想根据键对值求和。列表可以有任意数量的值(但每个列表都有相同的值) 我通过谷歌搜索找到了许多不同的代码,但没有一个是针对这种情况的,也没有一个是完全正确的。我刚刚开始学习Python,所以我确信我还缺少一些东西Python 如何将两个列表合并到字典中,并对重复键的值求和,python,dictionary,duplicates,Python,Dictionary,Duplicates,我试图构建一个函数,将两个列表合并到一个字典中,但“key”列表包含重复项。我想根据键对值求和。列表可以有任意数量的值(但每个列表都有相同的值) 我通过谷歌搜索找到了许多不同的代码,但没有一个是针对这种情况的,也没有一个是完全正确的。我刚刚开始学习Python,所以我确信我还缺少一些东西 my_dict={} def merge_lists(my_dict): newlist={k: sum(i[k] for i in my_dict) for k in my_dict[0]}
my_dict={}
def merge_lists(my_dict):
newlist={k: sum(i[k] for i in my_dict) for k in my_dict[0]}
return newlist
如果我从以下列表开始:
键列表=[1,5,3,8,5,8,3],值列表=[2,3,7,1,4,9,2]
我在寻找这个结果:{'1':2,'3':9,'5':7,'8':10}一个简单的旧循环在这里是最好的:
>>> data = {}
>>> for key, val in zip(key_list, value_list):
... data[key] = data.get(key, 0) + val
...
>>> data
{1: 2, 5: 7, 3: 9, 8: 10}
@DanielMesejo在本例中,重复键在同一个字典中,因此我认为它们需要类似于带循环的defaultdict的东西。也许你们能找到那个重复的。@coldspeed:ufff,公认的答案是可怕的。@wim-true。但另一个答案现在有更多的选票。你认为它会以不同的方式关闭吗?这是一个复制品。也许另一个问答答案更好?我已经尝试过这两个帖子中发布的解决方案(以及任何其他帖子,甚至有点类似),但都不起作用。
data=collections.defaultdict(int)
等等。