# Python >= 3.5:defmerge_dictionaries(a, b):return{**a,**b}# else:defmerge_dictionaries(a, b):
c = a.copy()# make a copy of a
c.update(b)# modify keys and values of a with the b onesreturn c
a ={'x':1,'y':2}
b ={'y':3,'z':4}print(merge_dictionaries(a, b))# {'y': 3, 'x': 1, 'z': 4}
dict1 ={'color':'blue','shape':'square'}
dict2 ={'color':'red','edges':4}
dict1.update(dict2)#if a key exists in both, it takes the value of the second dict# dict1 = {'color': 'red', 'shape': 'square', 'edges': 4}# dict2 is left unchanged
# Python 3.9
z = x | y
# Python 3.5
z ={**x,**y}# Python <= 3.4defmerge_two_dicts(x, y):
z = x.copy()# start with keys and values of x
z.update(y)# modifies z with keys and values of yreturn z
z = merge_two_dicts(x, y)
how to merge two dictionaries with same keys in python
from collections import defaultdict
d1 ={1:2,3:4}
d2 ={1:6,3:7}
dd = defaultdict(list)for d in(d1, d2):# you can list as many input dicts as you want herefor key, value in d.items():
dd[key].append(value)print(dd)
defmerge_dicts(dict1, dict2):"""Here's an example of a for-loop being used abusively."""return{**dict2,**{k:(v ifnot(k in dict2)else(v + dict2.get(k))ifisinstance(v,list)else merge_dicts(v, dict2.get(k)))ifisinstance(v,dict)else v for k, v in dict1.items()}}
For dictionaries x and y, their shallowly-merged dictionary z takes values from y, replacing those from x.
In Python 3.9.0or greater (released 17 October 2020, PEP-584, discussed here):
z = x | y
In Python 3.5or greater:
z ={**x,**y}
In Python 2,(or3.4or lower) write a function:defmerge_two_dicts(x, y):
z = x.copy()# start with keys and values of x
z.update(y)# modifies z with keys and values of yreturn z
and now:
z = merge_two_dicts(x, y)
yusuke_power ={"Yusuke Urameshi":"Spirit Gun"}
hiei_power ={"Hiei":"Jagan Eye"}
powers =dict()# Brute forcefor dictionary in(yusuke_power, hiei_power):for key, value in dictionary.items():
powers[key]= value
# Dictionary Comprehension
powers ={key: value for d in(yusuke_power, hiei_power)for key, value in d.items()}# Copy and update
powers = yusuke_power.copy()
powers.update(hiei_power)# Dictionary unpacking (Python 3.5+)
powers ={**yusuke_power,**hiei_power}# Backwards compatible function for any number of dictsdefmerge_dicts(*dicts:dict):
merged_dict =dict()for dictionary in dicts:
merge_dict.update(dictionary)return merged_dict