Open In App

Python Merge Dictionaries with Same Keys

Last Updated : 06 Feb, 2024
Improve
Improve
Like Article
Like
Save
Share
Report

When working with dictionaries in Python, you should understand that they are mutable, unordered collections of key-value pairs. This flexibility allows us to quickly merge dictionaries, but what happens when two dictionaries have the same key? Python allows us to manage this situation. In this article, we’ll see how to merge dictionaries with the same keys.

Python Merge Dictionaries with Same Keys

Below, we provide examples to illustrate how to Merge Dictionaries with Same Keys by overwriting the values in Python.

Merge Dictionaries with Same Keys using the Python update() method

The update() method in Python is used to merge the keys and values of one dictionary into another. When the update() method is called, it iterates through the key-value pairs of dict2 and adds or updates them in dict1.

Example: In this example, we have used the update() method to merge two dictionaries dict1 and dict2. The merged dictionary will contain all unique key-value pairs as well as the same key with a corresponding list of values from both dictionaries.

Python3




# Python Merge Dictionaries with Same Keys
dict1 = {'a': 1, 'b': 2}
dict2 = {'b': 3, 'c': 4}
 
dict1.update({key: [dict1[key], dict2[key]] if key in dict2 else dict1[key] for key in dict1})
dict1.update({key: dict2[key] for key in dict2 if key not in dict1})
 
print(dict1)


Output

{'a': 1, 'b': [2, 3], 'c': 4}


Merge Dictionaries with Same Keys Using dict() Constructor

The keys and values of two dictionaries can be combined to create a new dictionary using the dict() constructor.
Example: In this example, we are merging two dictionaries, dict1 and dict2, into a new dictionary. We use the dict() constructor along with a list comprehension to combine the key-value pairs from both dictionaries. For keys that are common to both dictionaries, the values are combined into a list. If a key exists only in one of the dictionaries, it is included in the merged dictionary with its original value.

Python3




# Merge Dictionaries with Same Keys Overwrite
dict1 = {'a': 1, 'b': 2}
dict2 = {'b': 3, 'c': 4}
 
res = dict(list(dict1.items()) +
                  [(key, [dict1[key], dict2[key]]) if key in dict2 else (key, dict1[key]) for key in dict1] +
                  [(key, dict2[key]) for key in dict2 if key not in dict1])
 
print(res)


Output

{'a': 1, 'b': [2, 3], 'c': 4}


Merge Dictionaries with Same Keys using collections.ChainMap

The collections.ChainMap method provides a convenient way to view multiple dictionaries as a single, unified dictionary. This approach is particularly useful for merging dictionaries with overlapping keys while preserving the original dictionaries. ChainMap offers a dynamic view, making it efficient for handling large datasets without creating a new dictionary.

Example: In this example, we have used the ChainMap class from the collections module to merge two dictionaries, dict1 and dict2.

Python3




# Merge Dictionaries with Same Keys
from collections import ChainMap
 
dict1 = {'a': 1, 'b': 2}
dict2 = {'b': 3, 'c': 4}
 
res = dict(ChainMap({key: [dict1[key], dict2[key]] if key in dict2 else dict1[key] for key in dict1},
                            {key: dict2[key] for key in dict2 if key not in dict1}))
 
print(res)


Output

{'c': 4, 'a': 1, 'b': [2, 3]}


Conclusion

In conclusion, Python offers multiple ways to merge dictionaries, each with its own strengths. If you prefer a simple and traditional approach, use the update() method. When dealing with dynamic views and the need for key precedence, the collections.ChainMap method is a powerful choice. Choose the method that aligns with your coding style and project requirements.



Like Article
Suggest improvement
Share your thoughts in the comments

Similar Reads