d3 = dict(d1, **d2)
I understand that this merges the dictionary. But, is it unique? What if d1 has the same key as d2 but different value? I would like d1 and d2 to be merged, but d1 has priority if there is duplicate key.
d3 = dict(d1, **d2)
I understand that this merges the dictionary. But, is it unique? What if d1 has the same key as d2 but different value? I would like d1 and d2 to be merged, but d1 has priority if there is duplicate key.
You can use the .update()
method if you don't need the original d2
any more:
Update the dictionary with the key/value pairs from other, overwriting existing keys. Return
None
.
E.g.:
>>> d1 = {'a': 1, 'b': 2}
>>> d2 = {'b': 1, 'c': 3}
>>> d2.update(d1)
>>> d2
{'a': 1, 'c': 3, 'b': 2}
Update:
Of course you can copy the dictionary first in order to create a new merged one. This might or might not be necessary. In case you have objects in your dictionary, copy.deepcopy
should also be considered.
.
d1={'a':1,'b':2}
d2={'a':10,'c':3}
d1 overrides d2:
dict(d2,**d1)
# {'a': 1, 'c': 3, 'b': 2}
d2 overrides d1:
dict(d1,**d2)
# {'a': 10, 'c': 3, 'b': 2}
This behavior is not just a fluke of implementation; it is guaranteed in the documentation:
If a key is specified both in the positional argument and as a keyword argument, the value associated with the keyword is retained in the dictionary.