如何合并多个字典并添加相同键的值?(Python)



假设我有以下字典:

dict1 = {'a': 10, 'b': 8, 'c':3}
dict2 = {'c': 4}
dict3 = {'e':9, 'a':3}

我正试图以一种方式合并它们,使新的(组合)字典包含所有键,并将相同键的所有值添加在一起。例如,在本例中,我想要的输出如下:

dict = {'a': 13, 'b': 8, 'c':7, 'e':9}

看起来update()方法不起作用,因为一些值被覆盖了。我也尝试了ChainMaps,遇到了同样的问题。如何合并多个字典并添加相同键的值?非常感谢:)

这里有一个字典推导来实现使用itertools.chain.from_iterable()sum()。在这里,我从所有三个字典中创建键的set。然后我在字典推导式中迭代这个集合,以获得的总和。

>>> from itertools import chain
>>> dict1 = {'a': 10, 'b': 8, 'c':3}
>>> dict2 = {'c': 4}
>>> dict3 = {'e':9, 'a':3}
>>> my_dicts = dict1, dict2, dict3
>>> {k: sum(dd.get(k, 0) for dd in my_dicts) for k in set(chain.from_iterable(d.keys() for d in my_dicts))}
{'a': 13, 'e': 9, 'b': 8, 'c': 7}

下面的代码应该可以达到这个效果:

dict1 = {'a': 10, 'b': 8, 'c':3}
dict2 = {'c': 4}
dict3 = {'e':9, 'a':3}
multiple_dict = [dict1, dict2, dict3]
final_dict = {}
for dict in multiple_dict:
for key, value in dict.items():
if key in final_dict:
final_dict[key] += value
else:
final_dict[key] = value
print(final_dict)

相关内容

  • 没有找到相关文章

最新更新