添加两个词典中的值

Pet*_*ter 7 python algorithm merge dictionary python-3.x

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

result {a:8, b:7, c:1}
Run Code Online (Sandbox Code Playgroud)

我怎样才能得到结果?

hir*_*ist 12

这是一个可以做到这一点的单线程:

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}
Run Code Online (Sandbox Code Playgroud)

请注意,这set(dict1) | set(dict2)是您的两个词典的键集.并dict1.get(key, 0)返回dict1[key]如果该键存在,0否则.


MSe*_*ert 8

您可以使用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})
Run Code Online (Sandbox Code Playgroud)

如果你真的希望结果作为dict,你可以在之后将它丢回:

>>> dict(dict1 + dict2)
{'a': 8, 'b': 7, 'c': 1}
Run Code Online (Sandbox Code Playgroud)

  • 这个实现。有一个问题,它不是在计数零 (2认同)