从两个字典中添加值

新手上路,请多包涵
dict1 = {a: 5, b: 7}
dict2 = {a: 3, c: 1}

result {a:8, b:7, c:1}

我怎样才能得到结果?

原文由 Peter 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 368
2 个回答

这是一个可以做到这一点的单行代码:

 dict1 = {'a': 5, 'b': 7}
dict2 = {'a': 3, 'c': 1}

result = {key: dict1.get(key, 0) + dict2.get(key, 0)
          for key in set(dict1) | set(dict2)}
# {'c': 1, 'b': 7, 'a': 8}

请注意 set(dict1) | set(dict2) 是两个字典的键集。和 dict1.get(key, 0) 返回 dict1[key] 如果密钥存在, 0 否则。


这适用于更新的 python 版本:

 {k: dict1.get(k, 0) + dict2.get(k, 0) for k in dict1.keys() | dict2.keys()}

原文由 hiro protagonist 发布,翻译遵循 CC BY-SA 4.0 许可协议

您可以使用 collections.Counter 实现加法 + 这样:

 >>> from collections import Counter
>>> dict1 = Counter({'a': 5, 'b': 7})
>>> dict2 = Counter({'a': 3, 'c': 1})
>>> dict1 + dict2
Counter({'a': 8, 'b': 7, 'c': 1})

如果你真的想要结果作为 dict,你可以在之后将它的转换回来:

 >>> dict(dict1 + dict2)
{'a': 8, 'b': 7, 'c': 1}

原文由 MSeifert 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏