Python - Merge Dictionaries
Python - Merge dictionaries
Merging of two dictionaries is creating a new dictionary with the key-value pairs from both the given dictionaries.
There are many ways in which we can merge to dictionaries.
In this tutorial, will learn how to merge two dictionaries using OR bitwise operator |
, or dictionary update() method.
1. Exceptional Scenario: Two dictionaries have common keys
If the two dictionaries have any common keys, then we have to make a decision of which dictionary has to be prioritised.
For example, if dictionary dict1
has key1
, and key2
as keys, and dictionary dict2
has key2
, and key3
as keys, we have a common key key2
between the two dictionaries.
key2
has a chance of having a different value in dict1
and dict2
.
Now, we need to make a decision of which value must be there for key2
in the merged dictionary.
2. Merge dictionaries using Dictionary update() method in Python
Syntax
The syntax to merge two dictionaries dict1
and dict2
using update method is
dict1.update(dict2)
The above statement updates the key-values pairs in dict1
with the key-value pairs from dict2
. It inserts key-value pairs of dict2
to dict1
for the keys that are not present in dict1
. And for the common keys between the two dictionaries, the values from dict2
would be considered and updated for the keys in dict1
.
If you would like to prioritise the values from dict1, but not dict2, then swap between the calling dictionary and argument dictionary as shown in the following expression.
dict2.update(dict1)
Example
In the following program, we take two dictionaries: dict1
and dict2
. We shall merge these two dictionaries using merge() method of dictionary class.
Python Program
dict1 = {
"key1": 10,
"key2": 20,
"key3": 30}
dict2 = {
"key5": 50,
"key2": 2000,
"key4": 40}
dict1.update(dict2)
print(dict1)
Output
{'key1': 10, 'key2': 2000, 'key3': 30, 'key5': 50, 'key4': 40}
For the keys, key4
and key5
, that are not present in dict1
, new entries are created. And for the common keys, the values from dict2
are updated in dict1
.
Please note that this operator updates the calling dictionary dict1
. If you would like to keep the original dictionaries unchanged, copy the contents of calling dictionary, and then make the update.
In the following program, we make a copy of the dict1
to result, and then update the result with key-value pairs from dict2
using update() method.
Python Program
dict1 = {
"key1": 10,
"key2": 20,
"key3": 30}
dict2 = {
"key5": 50,
"key2": 2000,
"key4": 40}
result = dict1.copy()
result.update(dict2)
print(result)
Output
{'key1': 10, 'key2': 2000, 'key3': 30, 'key5': 50, 'key4': 40}
Now, we have the two dictionaries merged and the result stored in a separate dictionary, rather than updating the original dictionaries.
3. Merge Dictionaries using OR Operator in Python
Syntax
The syntax to merge two dictionaries dict1
and dict2
using OR bitwise operator is
dict1 | dict2
The above expression creates a new dictionary with the key-value pairs of dict1
and inserts key-value pairs of dict2
to dict1
for the keys that are not present in dict1
.
And for the common keys between the two dictionaries, the values from dict2
would be considered.
If you want to prioritise the values in dict1 to dict2, then change the order of the dictionaries as shown in the following expression.
dict2 | dict1
Example
In the following program, we take two dictionaries: dict1
and dict2
. We shall merge these two dictionaries using OR bitwise operator.
Python Program
dict1 = {
"key1": 10,
"key2": 20,
"key3": 30}
dict2 = {
"key5": 50,
"key2": 2000,
"key4": 40}
result = dict1 | dict2
print(result)
Output
{'key1': 10, 'key2': 2000, 'key3': 30, 'key5': 50, 'key4': 40}
For the keys, key4
and key5
, that are not present in dict1
, new entries are created. And for the common keys, the values from dict2
are updated in dict1
.
Summary
In this tutorial, we learned how to merge two dictionaries, and addressed the scenarios where the two dictionaries can have common keys, using dictionary update() method or OR bitwise operator.