Learn 7 different ways to merge two dictionaries in Python. This article covers the update() method, the | operator, the ** operator, dictionary comprehension, and more.
Dictionaries are one of the built-in data structures in Python. You can use them to store data in key-value pairs.
You can read about the different methods you can use to access, modify, add, and remove elements in a dictionary here.
In this article, you'll learn how to merge two dictionaries using the following:
update()
method.**
).chain()
method.ChainMap()
method.|
).|=
).In this section, we'll discuss the different methods you can use to merge dictionaries in Python, along with code examples.
All the examples you'll see in this article will involve the merging of two dictionaries, but you can merge as many as you want.
update()
MethodThe update()
method is a built-in method that you can use to add data to dictionaries.
Consider the dictionary below:
devBio = {
"name": "Ihechikara",
"age": 500,
"language": "Python"
}
devBio.update({"role": "Technical Writer"})
print(devBio)
# {'name': 'Ihechikara', 'age': 500, 'language': 'Python', 'role': 'Technical Writer'}
In the code above, we created a dictionary called devBio
with three key and value pairs: {'name': 'Ihechikara', 'age': 50, 'language': 'Python'}
.
Using the update()
method, we added another key and value pair: devBio.update({"role": "Technical Writer"})
.
In the same manner, we can merge two dictionaries by passing another dictionary as a parameter to the update()
method. Here's an example:
devBio = {
"name": "Ihechikara",
"age": 500,
"language": "Python"
}
tools = {
"dev environment": "JupyterLab",
"os": "Windows",
"visualization": "Matplotlib"
}
devBio.update(tools)
print(devBio)
# {'name': 'Ihechikara', 'age': 500, 'language': 'Python', 'dev environment': 'JupyterLab', 'os': 'Windows', 'visualization': 'Matplotlib'}
In the code above, we created two dictionaries — devBio
and tools
.
Using the update()
method, we merged the key and value pairs of the tools
dictionary to the devBio
dictionary: devBio.update(tools)
.
The merged dictionaries looked like this:
{
'name': 'Ihechikara',
'age': 500,
'language': 'Python',
'dev environment': 'JupyterLab',
'os': 'Windows',
'visualization': 'Matplotlib'
}
**
)You can use the double asterisk (also called double star) operator (**
) to "unpack" and merge the key and value pairs of two or more dictionaries into a variable.
Here's a code example:
devBio = {
"name": "Ihechikara",
"age": 500,
"language": "Python"
}
tools = {
"dev environment": "JupyterLab",
"os": "Windows",
"visualization": "Matplotlib"
}
merged_bio = { **devBio, **tools}
print(merged_bio)
# {'name': 'Ihechikara', 'age': 500, 'language': 'Python', 'dev environment': 'JupyterLab', 'os': 'Windows', 'visualization': 'Matplotlib'}
In the code above, we unpacked the devBio
and tools
dictionaries using the double asterisk operator: { **devBio, **tools}
.
We then stored them in a variable called merged_bio
.
chain()
MethodThe chain()
method takes multiple iterable objects as its parameter. It merges and returns the objects as one iterable object.
You have to import the chain()
method from the itertools
module before using it:
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)
# {'name': 'Ihechikara', 'age': 500, 'language': 'Python', 'dev environment': 'JupyterLab', 'os': 'Windows', 'visualization': 'Matplotlib'}
In the code above, we passed the dictionaries to be merged as parameters to the chain()
method: chain(devBio.items(), tools.items())
.
We used the items()
method to access the key and value pairs of each dictionary.
Lastly, we nested the chain()
method and its parameters in the dict()
method: dict(chain(devBio.items(), tools.items()))
.
The dict()
method can be used to create a dictionary so we used it to convert the iterable objects returned (the key and value pairs) into a dictionary, and stored them in the merged_bio
variable.
ChainMap()
MethodThe ChainMap()
method works the same way as the chain()
method as regards to merging dictionaries. The main difference is that you don't need the items()
method to access the key and value pairs of the dictionaries.
You can import the ChainMap()
method from the collections
module.
Here's how you can use the ChainMap()
method to merger two dictionaries:
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)
# {'name': 'Ihechikara', 'age': 500, 'language': 'Python', 'dev environment': 'JupyterLab', 'os': 'Windows', 'visualization': 'Matplotlib'}
You can check the explanation in the last section to understand the logic in the code above.
|
)The merge operator (|
) was first introduced in Python 3.9. It's a shorter and simpler syntax that you can use to merge dictionaries.
Here's an example:
from collections import ChainMap
devBio = {
"name": "Ihechikara",
"age": 500,
"language": "Python"
}
tools = {
"dev environment": "JupyterLab",
"os": "Windows",
"visualization": "Matplotlib"
}
merged_bio = devBio | tools
print(merged_bio)
# {'name': 'Ihechikara', 'age': 500, 'language': 'Python', 'dev environment': 'JupyterLab', 'os': 'Windows', 'visualization': 'Matplotlib'}
So to merge the devBio
and tools
dictionary, we put the |
operator between them: devBio | tools
.
|=
)The update operator (|=
) operator is another operator that was introduced in Python 3.9.
It works just like the update()
method. That is:
from collections import ChainMap
devBio = {
"name": "Ihechikara",
"age": 500,
"language": "Python"
}
tools = {
"dev environment": "JupyterLab",
"os": "Windows",
"visualization": "Matplotlib"
}
devBio |= tools
print(devBio)
# {'name': 'Ihechikara', 'age': 50, 'language': 'Python', 'dev environment': 'JupyterLab', 'os': 'Windows', 'visualization': 'Matplotlib'}
In the code above, we used the |=
to mege the key and value pairs in the tools
dictionary into the devBio
dictionary.
In this article, we talked about dictionaries in Python. You can use them to store data in key-value pairs.
We saw how to merge two dictionaries in Python using:
update()
method.**
).chain()
method.ChainMap()
method.|
).|=
).Each method had its own section with code examples that showed how to use them to merge dictionaries.
Happy coding!
Source: https://www.freecodecamp.org
#python