z = {**x, **y}
# Python >= 3.5:
def merge_dictionaries(a, b):
return {**a, **b}
# else:
def merge_dictionaries(a, b):
c = a.copy() # make a copy of a
c.update(b) # modify keys and values of a with the b ones
return 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
dict.update([other])
def mergeDict(dict1, dict2):
''' Merge dictionaries and keep values of common keys in list'''
dict3 = {**dict1, **dict2}
for key, value in dict3.items():
if key in dict1 and key in dict2:
dict3[key] = [value , dict1[key]]
return dict3
# Merge dictionaries and add values of common keys in a list
dict3 = mergeDict(dict1, dict2)
print('Dictionary 3 :')
print(dict3)
# Python 3.9+ is required
mergedDict = dict1 | dict2
def merge_dicts(dict1, dict2):
"""Here's an example of a for-loop being used abusively."""
return {**dict2, **{k: (v if not (k in dict2) else (v + dict2.get(k)) if isinstance(v, list) else merge_dicts(v, dict2.get(k))) if isinstance(v, dict) else v for k, v in dict1.items()}}