DEV Community

Avnish
Avnish

Posted on

How do I merge two dictionaries in a single expression in Python

Merging dictionaries in Python is a common operation that can be accomplished in various ways. This functionality is particularly useful when you want to combine data stored in two or more dictionaries into a single dictionary. Let's go through the methods mentioned, with simple examples for each.

1. Using the update() Method

The update() method adds elements from one dictionary to another. If there are overlapping keys, the values from the second dictionary will overwrite those from the first.

devBio = {"name": "Ihechikara", "age": 500, "language": "Python"}
tools = {"dev environment": "JupyterLab", "os": "Windows", "visualization": "Matplotlib"}

devBio.update(tools)

print(devBio)
Enter fullscreen mode Exit fullscreen mode

Output:

{'name': 'Ihechikara', 'age': 500, 'language': 'Python', 'dev environment': 'JupyterLab', 'os': 'Windows', 'visualization': 'Matplotlib'}
Enter fullscreen mode Exit fullscreen mode

2. Using the Double Asterisk Operator (**)

The double asterisk operator allows you to unpack dictionary items, enabling the merging of two or more dictionaries in a single expression.

devBio = {"name": "Ihechikara", "age": 500, "language": "Python"}
tools = {"dev environment": "JupyterLab", "os": "Windows", "visualization": "Matplotlib"}

merged_bio = {**devBio, **tools}

print(merged_bio)
Enter fullscreen mode Exit fullscreen mode

Output:

{'name': 'Ihechikara', 'age': 500, 'language': 'Python', 'dev environment': 'JupyterLab', 'os': 'Windows', 'visualization': 'Matplotlib'}
Enter fullscreen mode Exit fullscreen mode

3. Using the chain() Method

The chain() method from the itertools module is used for treating consecutive sequences as a single sequence. While not directly merging dictionaries, it can be used alongside dict() to combine dictionaries.

from itertools import chain

devBio = {"name": "Ihechikara", "age": 500, "language": "Python"}
tools = {"dev environment": "JupyterLab", "os": "Windows", "visualization": "Matplotlib"}

merged_bio = dict(chain(devBio.items(), tools.items()))

print(merged_bio)
Enter fullscreen mode Exit fullscreen mode

4. Using the ChainMap() Method

ChainMap() from the collections module creates a single view of multiple dictionaries. You can convert it back to a dictionary to merge them.

from collections import ChainMap

devBio = {"name": "Ihechikara", "age": 500, "language": "Python"}
tools = {"dev environment": "JupyterLab", "os": "Windows", "visualization": "Matplotlib"}

merged_bio = dict(ChainMap(devBio, tools))

print(merged_bio)
Enter fullscreen mode Exit fullscreen mode

5. Using the Merge Operator (|)

Introduced in Python 3.9, the merge operator | provides a succinct syntax to merge two dictionaries.

devBio = {"name": "Ihechikara", "age": 500, "language": "Python"}
tools = {"dev environment": "JupyterLab", "os": "Windows", "visualization": "Matplotlib"}

merged_bio = devBio | tools

print(merged_bio)
Enter fullscreen mode Exit fullscreen mode

6. Using the Update Operator (|=)

Also introduced in Python 3.9, the update operator |= updates a dictionary with another dictionary's key-value pairs in-place.

devBio = {"name": "Ihechikara", "age": 500, "language": "Python"}
tools = {"dev environment": "JupyterLab", "os": "Windows", "visualization": "Matplotlib"}

devBio |= tools

print(devBio)
Enter fullscreen mode Exit fullscreen mode

Summary:

  • The update() method and the |= operator modify the original dictionary.
  • The ** operator, chain() method, ChainMap() method, and the | operator create a new dictionary without altering the originals.
  • The | and |= operators are the most concise but require Python 3.9 or later.
  • The ** operator is widely used for its simplicity and readability, working in Python 3.5 and later.

Top comments (0)