Skip to content Skip to sidebar Skip to footer

Add Values From Two Dictionaries

dict1 = {a: 5, b: 7} dict2 = {a: 3, c: 1} result {a:8, b:7, c:1} How can I get the result?

Solution 1:

this is a one-liner that would do just that:

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

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

note that set(dict1) | set(dict2) is the set of the keys of both your dictionaries. and dict1.get(key, 0) returns dict1[key] if the key exists, 0 otherwise.


this works on a more recent python version:

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

Solution 2:

You can use collections.Counter which implements addition + that way:

>>>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})

if you really want the result as dict you can cast it back afterwards:

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

Solution 3:

Here is a nice function for you:

defmerge_dictionaries(dict1,dict2):merged_dictionary= {}

    for key in dict1:if key in dict2:new_value=dict1[key]+dict2[key]else:new_value=dict1[key]merged_dictionary[key]=new_valuefor key in dict2:if key not in merged_dictionary:merged_dictionary[key]=dict2[key]returnmerged_dictionary

by writing:

dict1 = {'a': 5, 'b': 7}
dict2 = {'a': 3, 'c': 1}
result = merge_dictionaries(dict1, dict2)

result will be:

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

Solution 4:

A quick dictionary comprehension that should work on any classes which accept the + operator. Performance might not be optimal.

{
    **dict1,
    **{ k:(dict1[k]+v if k in dict1 else v)
        for k,v in dict2.items() }
}

Solution 5:

Here is another approach but it is quite lengthy!

d1 = {'a': 5, 'b': 7}
d2 = {'a': 3, 'c': 1}

d={}
fori,j in d1.items():
    fork,l in d2.items():
        if i==k:
            c={i:j+l}
            d.update(c)
fori,j in d1.items():
    if i not in d:
        d.update({i:j})
form,n in d2.items():
    if m not in d:
        d.update({m:n})

Post a Comment for "Add Values From Two Dictionaries"