The easiest way to add a new value to a dictionary is to use the subscript notation: dictionary_name[key] = value.
This tutorial will go through the various ways to add key-value pairs to a Python dictionary with code examples.
Table of contents
- What is a Python Dictionary?
- Python Add to Dictionary Using Subscript Notation
- Python Update Dictionary
- Add an item to a dictionary using the ** operator in Python
- Using list and dict.items() to add key-value pairs to a dictionary
- Use List Comprehension to Combine Dictionary Key-Value Pairs
- Using the __setitem__() Method to Add Key-Value pairs to a Dictionary
- Use dict.setdefault() to add Key-Value pairs to Dictionary
- Summary
What is a Python Dictionary?
A dictionary in Python is a collection of key-value pairs. You can use a key to access the value associated with that key. A key must be immutable like a string, integer, boolean or tuple. You cannot use a mutable object like a slice, or you will raise the error: TypeError: unhashable type: ‘slice’. To define a dictionary, you must use braces {} as shown in the following example:
capital_cities = {'England':'London', 'France':'Paris', 'Italy':'Rome'}
Python Add to Dictionary Using Subscript Notation
Dictionaries are dynamic structures, and you can add or remove key-value pairs to and from a dictionary at any time. To add an item to a Python dictionary, you should assign a value to a new key in your dictionary. You cannot use the functions add(), insert() or append() as you can with a list. Let’s look at the syntax for adding a new value to a dictionary.
dictionary_name[key] = value
Let’s look at an example of adding key-value pairs to a dictionary using the subscript notation, starting with an empty dictionary.
# Define an empty dictionary
my_dict = {}
# Add key and value to my_dict using subscript notation
my_dict['England'] = 'London'
# Print the content of my_dict
print('Adding to empty dictionary: ', my_dict)
# Add another key-value pair
my_dict['Germany'] = 'Berlin'
# Print content of my_dict
print('Append to dictionary: ', my_dict)
Let’s run the code to see what happens:
Adding to empty dictionary: {'England': 'London'}
Append to dictionary: {'England': 'London', 'Germany': 'Berlin'}
Python Update Dictionary
We can add key-value pairs using the dict.update() method. Let’s look at an example:
my_dict = {'England':'London', 'France':'Paris'}
dict_to_add = {'Germany':'Berlin', 'Ethiopia':'Addis Ababa'}
# Update the original dictionary with the dict_to_add content
my_dict.update(dict_to_add)
# Print new content of dictionary
print(my_dict)
{'England': 'London', 'France': 'Paris', 'Germany': 'Berlin', 'Ethiopia': 'Addis Ababa'}
You can update the original dictionary directly without defining a secondary dictionary using the following syntax:
my_dict = {'England':'London', 'France':'Paris'}
my_dict.update([('Germany','Berlin'), ('Ethiopia','Addis Ababa')])
print(my_dict)
{'England': 'London', 'France': 'Paris', 'Germany': 'Berlin', 'Ethiopia': 'Addis Ababa'}
Add an item to a dictionary using the ** operator in Python
In Python 3.5 and higher releases, you can use the unpacking operator ** to add a key-value pair to another dictionary. Applying the ** operator to a dictionary deserializes the dictionary and converts it to its key-value pairs. Let’s look at an example of the unpacking operator to merge two dictionaries.
my_dict = {'England':'London', 'France':'Paris'}
print('Original Dictionary is: ', my_dict)
dict_to_add = {'Japan':'Tokyo', 'Russia':'Moscow'}
my_dict = {**my_dict, **dict_to_add}
print('Modified dictionary is: ', my_dict)
The above code defines two dictionaries and uses the unpacking operator to merge the second to the first. Let’s run the code to see the result:
Original Dictionary is: {'England': 'London', 'France': 'Paris'}
Modified dictionary is: {'England': 'London', 'France': 'Paris', 'Japan': 'Tokyo', 'Russia': 'Moscow'}
For further reading on unpacking iterable objects like dictionaries, go to the article: How to Solve Python TypeError: cannot unpack non-iterable NoneType object.
Using list and dict.items() to add key-value pairs to a dictionary
We can add key-value pairs to a dictionary using the items() method, which returns a view object. The view object contains the key-value pairs of the dictionary as tuples in a list. Let’s look at an example of using dict.items() to add the key-value pairs of one dictionary to another.
my_dict = {'England':'London', 'France':'Paris'}
print('Original Dictionary is: ', my_dict)
dict_to_add = {'Japan':'Tokyo', 'Russia':'Moscow'}
my_dict = dict(list(my_dict.items()) + list(dict_to_add.items()))
print('Modified dictionary is: ', my_dict)
The above program obtains lists of key-value tuple pairs for the two dictionaries and combines them using the concatenation operator. The program converts the combination to a dictionary using dict() and prints the modified dictionary to the console. Let’s run the code to see the result:
Original Dictionary is: {'England': 'London', 'France': 'Paris'}
Modified dictionary is: {'England': 'London', 'France': 'Paris', 'Japan': 'Tokyo', 'Russia': 'Moscow'}
Use List Comprehension to Combine Dictionary Key-Value Pairs
We can use list comprehension to create a dictionary based on the values from two or more dictionaries. We can use the items() method mentioned above to get the key-value pairs of the dictionaries. Let’s look at an example of using list comprehension to combine two dictionaries and add them to a new dictionary.
my_dict = {'England':'London', 'France':'Paris'}
print('First Dictionary is: ', my_dict)
my_dict2 = {'Japan':'Tokyo', 'Russia':'Moscow'}
print('Second Dictionary is: ', my_dict2)
new_dict = {}
new_dict = dict(i for d in [my_dict,my_dict2] for i in d.items() )
print(new_dict)
The above program defines three dictionaries, two with key-value pairs and an empty dictionary to store the combined values. The program uses list comprehension to iterate over both dictionaries and add the key-value pairs to the third dictionary using the items() method. Let’s run the code to see the result:
First Dictionary is: {'England': 'London', 'France': 'Paris'}
Second Dictionary is: {'Japan': 'Tokyo', 'Russia': 'Moscow'}
{'England': 'London', 'France': 'Paris', 'Japan': 'Tokyo', 'Russia': 'Moscow'}
Using the __setitem__() Method to Add Key-Value pairs to a Dictionary
We can use the built-in __setitem__() method to add key-value pairs to a dictionary. Let’s look at an example:
my_dict = {'England':'London', 'France':'Paris'}
print('Original dictionary: ', my_dict)
my_dict.__setitem__('Japan', 'Tokyo')
print('Modified dictionary: ', my_dict)
The above code adds a key-value tuple to the dictionary using the __setitem__() method. Let’s run the program to see the result:
Original dictionary: {'England': 'London', 'France': 'Paris'}
Modified dictionary: {'England': 'London', 'France': 'Paris', 'Japan': 'Tokyo'}
Use dict.setdefault() to add Key-Value pairs to Dictionary
We can use the dict.setdefault() to add to a dictionary. The syntax is
setdefault(key[,default])
If the key is in the dictionary, the function will return its value. If not, it will insert the key with a value of default and return default. The default of default is None. Let’s look at an example of adding a key-value pair to an existing dictionary.
my_dict = {'England':'London', 'France':'Paris'}
print('Original Dictionary is: ', my_dict)
my_dict.setdefault('Japan','Tokyo')
print(my_dict)
The key we want to add is Japan, which does not exist in my_dict, so setdefault() will insert this key and the corresponding value. Let’s run the code to see what happens:
Original Dictionary is: {'England': 'London', 'France': 'Paris'}
{'England': 'London', 'France': 'Paris', 'Japan': 'Tokyo'}
Summary
Congratulations on reading to the end of this tutorial! You have seen different ways to add an item to a dictionary in Python. Now you can add dictionaries like a pro!
For further reading on dictionaries, go to the articles:
- How to Sort a Dictionary by Value in Python
- How to Iterate Over a Dictionary in Python
- How to Check if a Key Exists in a Dictionary in Python
- How to Create a Nested Dictionary in Python
To learn more about Python, specific to data science and machine learning, go to the online courses page for Python.
Have fun and happy researching!