In this tutorial, we will discuss the concept of a Python nested dictionary i.e. a dictionary inside another dictionary. Also, we will learn how to create and access nested dictionaries and their elements in the Python programming language.
With the help of some examples, we will also modify the nested dictionary elements. A normal dictionary is a collection of key-value pairs , and all the keys and their corresponding values are stored in an unordered fashion. We use curly braces { } to define a dictionary.
Example:
my_dict={"hello":"world","go":"pro", "ios":"apple"}
What is a (Python) Nested Dictionary?
When we define a dictionary inside a dictionary, it is known as a nested dictionary.
Example:
nest_dic = {"dict_1":{"hello":"world", "python":"programming"}, "dict_2": {"tech":"geekbuzz", 'OS':"window" } }
Behind the code
In the above code, we have declared a variable nest_dic , which is a dictionary data type, but we will call it a nested dictionary because it has 2 dictionaries inside itself.
Create a Python Nested Dictionary
Let’s create 2 dictionaries inside a dictionary:
mobiles = {
1: {'Company':'iphone', 'model':'XR', 'OS':'IOS', "price":67000} ,
2: {'Company' :'Samsung', 'model':'Note 10', "OS":'Android', 'price':87000}
}
Behind the code
In the above code, our main dictionary is mobiles and it has two keys 1 & 2, and both the keys have their own dictionaries as values.
Access Elements of a Nested Dictionary
Like with a normal dictionary, we use square brackets for accessing a nested dictionary and the keys to get the corresponding values. In a nested dictionary, if we want to access the values then we have to use 2 square bracket pairs.
Example:
mobiles =
{
1: {'Company':'iphone', 'model':'XR', 'OS':'IOS', "price":67000} ,
2: {'Company':'Samsung', 'model':'Note 10', "OS":'Android', 'price':87000}
}
print(mobiles [1] ['model'])
print(mobiles [2] ['model'])
print(mobiles [1] ['price'])
print(mobiles [2] ['price'])
Output:
iphone
Samsung
67000
87000
Examples:
Add Elements to the nested dictionary:
mobiles = {
1: {'Company':'iphone', 'model':'XR', 'OS':'IOS', "price":67000} ,
2: {'Company':'Samsung', 'model':'Note 10', "OS":'Android', 'price':87000}
}
#Adding a new dictionary in the mobiles dictionary
mobiles[3] = {}
mobiles[3]['Company'] = 'Nokia'
mobiles[3]['model'] = 'A7'
mobiles[3]['OS'] = 'Android'
mobiles[3]['price'] = 17000
print(mobiles[1])
print(mobiles[2])
print(mobiles[3])
Output:
{'Company': 'iphone', 'model': 'XR', 'OS': 'IOS', 'price': 67000}
{'Company': 'Samsung', 'model': 'Note 10', 'OS': 'Android', 'price': 87000}
{'Company': 'Nokia', 'model': 'A7', 'OS': 'Android', 'price': 17000}
Behind the code
In the above example, we add a new dictionary in mobiles. F irst, we create a new dictionary at mobiles[3] then place values in that dictionary with the help of keys.
There is another simple approach for adding a dictionary inside a dictionary.
Let’s understand it with an example:
mobiles = {
1: {'Company':'iphone', 'model':'XR', 'OS':'IOS', "price":67000} ,
2: {'Company':'Samsung', 'model':'Note 10', "OS":'Android', 'price':87000}
}
#Adding new dictionary in the mobiles dictionary
mobiles[3] = {'Company':'Nokia', 'model':'A7', 'OS':'Android', 'price':17000}
print(mobiles[1])
print(mobiles[2])
print(mobiles[3])
Delete Elements from a Python Nested Dictionary
Python has a keyword del that we use to delete objects. So, in a dictionary, we can also delete items with the help of this del keyword.
Example to delete an element from a nested dictionary:
mobiles = {
1: {'Company':'iphone', 'model':'XR', 'OS':'IOS', "price":67000} ,
2: {'Company':'Samsung', 'model':'Note 10', "OS":'Android', 'price':87000}
}
mobiles[3] = {'Company':'Nokia', 'model':'A7', 'OS':'Android', 'price':17000}
del mobiles[1]['price'] # Delete the price key and its value
del mobiles[2]['price']
del mobiles[3]['price']
print(mobiles[1])
print(mobiles[2])
print(mobiles[3])
Output:
{'Company': 'iphone', 'model': 'XR', 'OS': 'IOS'}
{'Company': 'Samsung', 'model': 'Note 10', 'OS': 'Android'}
{'Company': 'Nokia', 'model': 'A7', 'OS': 'Android'}
Behind the code
In the above example, we delete the price key and its values for each nested dictionary.
Delete a Python Nested Dictionary
As we have deleted the price element for each dictionary using the del keyword, we can also delete the nested dictionary using the same.
Example:
mobiles = {
1: {'Company':'iphone', 'model':'XR', 'OS':'IOS', "price":67000} ,
2: {'Company':'Samsung', 'model':'Note 10', "OS":'Android', 'price':87000}
}
mobiles[3] = {'Company':'Nokia', 'model':'A7', 'OS':'Android', 'price':17000}
del mobiles[3]
print(mobiles)
Output:
{1: {'Company': 'iphone', 'model': 'XR', 'OS': 'IOS', 'price': 67000}, 2: {'Company': 'Samsung', 'model': 'Note 10', 'OS': 'Android', 'price': 87000}}
Iterating Through a Nested Dictionary
We can iterate over the items of nested dictionaries with the help of for loop.
Example:
mobiles = {
1: {'Company':'iphone', 'model':'XR', 'OS':'IOS', "price":67000} ,
2: {'Company':'Samsung', 'model':'Note 10', "OS":'Android', 'price':87000},
3: {'Company':'Nokia', 'model':'A7', 'OS':'Android', 'price':17000}
}
for i , nes_dict in mobiles.items():
print(i, 'Product information')
for j in nes_dict:
print(j, nes_dict[j])
print("************")
Output:
1 Product information
Company iphone
model XR
OS IOS
price 67000
************
2 Product information
Company Samsung
model Note 10
OS Android
price 87000
************
3 Product information
Company Nokia
model A7
OS Android
price 17000
************
Points to Remember
- A nested dictionary is a dictionary inside a dictionary.
- Only the values of a dictionary can be a dictionary because dictionaries are mutable.
- Once a dictionary is created, we can add and delete items from it.
- We can access the nested dictionary using the parent dictionary key.