python - 如何合并多个字典并添加同一个键的值?(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 并遇到了同样的问题。如何合并多个字典并添加相同键的值?非常感谢:)
解决方案
这是使用and实现此目的的字典理解。在这里,我正在从所有三个字典中创建一个键。然后我在字典理解中对这个集合进行迭代,以获得每个键的值的总和。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}
推荐阅读
- apache - 如何使用 Apache 重定向 Node-Red 的请求?
- android - 从位图保存图像时出错。给出 NullPointException 错误
- java - Java并发控制台IO
- google-analytics - 将 Matomo (Piwik) 跟踪集成到 Confluence
- python - 缩放 OpenCV 人脸识别中检测到的矩形
- python - 在 GNURadio 中使用 Python 模块制作自己的信号源
- php - 您如何将架构与有效负载相关联?
- julia - Julia中的struct有没有repmat之类的功能?
- sql - 在 oracle 文件中添加引号
- angular - 将对象返回给服务的调用者