Objects in a list can be accessed by their index numbers but objects in a dictionary can't. Each object in a dictionary has a Key and a Value. We need to use the key to access it's value. A key woks like the index number. But a key is not necessarily a number. It can be any data type.
Let us understand a dictionary by an example.
This is a table of names of most populated cities in india with the number of it's inhabitants according to the last census.
Mumbai 12,442,373
Delhi 11,034,555
Bangalore 8,443,675
Hyderabad 6,993,262
Ahmedabad 5,577,940
Chennai 4,646,732
Let us create a dictionary using Python, so that we will then be able to type in the name of the city to find out the number of people living in it. A dictionary is enclosed by curly braces {}
I will give a short name to this dictionary "city" for ease of use
city = {"Mumbai":12442373, "Delhi":11034555, "Bangalore":8443675, "Hyderabad":6993262, "Ahmedabad":5577940}
This is a dictionary. The name of the dictionary is city. All the elements of this dictionary are within {} curly braces. Each object in the dictionary is separated by a , comma. Each element consists of a key and a value.
"Mumbai":12442373
We are using a text string "Mumbai" as a key here. A : Colon follows a key and the next comes the Value. We have a number as a value. Keys and values can have any data type. Thus we can see, we can create any type of table. A digital table which we can then query.
city["Mumbai"]
12442373
city["Bangalore"]8443675
But we will get a Error message if we try to access a name not in there
city["Kolkata"]...KeyError: 'Kolkata'
We can access all the elements in a dictionary by simply typing it's name in a Python shell
city
{'Mumbai': 12442373, 'Delhi': 11034555, 'Bangalore': 8443675, 'Hyderabad': 6993262, 'Ahmedabad': 5577940}
Let us see what are the operations that we can perform on a dictionary
Say, we want to add a new city name in it along with it's population. How do we do that ? It is shown below.
city["Chennai"] = 4646732
Let us substantiate that by printing the entire dicionary
city
{'Mumbai': 12442373, 'Delhi': 11034555, 'Bangalore': 8443675, 'Hyderabad': 6993262, 'Ahmedabad': 5577940, 'Chennai': 4646732}
How about changing the value of population of a city ? We can do that too
city["Mumbai"] = 12500000
And confirm it by
city["Mumbai"]
12500000
What if we decide to delete a city in the dictionary, could we do that ? Yes we can.
del city["Ahmedabad"]
We can confirm that by using just the city["Ahmedabad"] which will display a keyError, or we can see the entire dicionary. As our dictionary is short, we can print it here
city
{'Mumbai': 12500000, 'Delhi': 11034555, 'Bangalore': 8443675, 'Hyderabad': 6993262, 'Chennai': 4646732}
Notice that Ahmedabad is missing in there!
Now let us take another example where a Key is a number and the Value is a Text string. We might sometime need such a table
mydict = {1:"Sanjay", 2:"Chandrakant", 3:"Shailaja"}
mydict
{1: 'Sanjay', 2: 'Chandrakant', 3: 'Shailaja'}
mydict[1]
'Sanjay'
mydict[2]
'Chandrakant'
We can access all the elements in a dictionary by simply typing it's name in a Python shell
city
{'Mumbai': 12442373, 'Delhi': 11034555, 'Bangalore': 8443675, 'Hyderabad': 6993262, 'Ahmedabad': 5577940}
Let us see what are the operations that we can perform on a dictionary
Say, we want to add a new city name in it along with it's population. How do we do that ? It is shown below.
city["Chennai"] = 4646732
Let us substantiate that by printing the entire dicionary
city
{'Mumbai': 12442373, 'Delhi': 11034555, 'Bangalore': 8443675, 'Hyderabad': 6993262, 'Ahmedabad': 5577940, 'Chennai': 4646732}
How about changing the value of population of a city ? We can do that too
city["Mumbai"] = 12500000
And confirm it by
city["Mumbai"]
12500000
What if we decide to delete a city in the dictionary, could we do that ? Yes we can.
del city["Ahmedabad"]
We can confirm that by using just the city["Ahmedabad"] which will display a keyError, or we can see the entire dicionary. As our dictionary is short, we can print it here
city
{'Mumbai': 12500000, 'Delhi': 11034555, 'Bangalore': 8443675, 'Hyderabad': 6993262, 'Chennai': 4646732}
Notice that Ahmedabad is missing in there!
Now let us take another example where a Key is a number and the Value is a Text string. We might sometime need such a table
mydict = {1:"Sanjay", 2:"Chandrakant", 3:"Shailaja"}
mydict
{1: 'Sanjay', 2: 'Chandrakant', 3: 'Shailaja'}
mydict[1]
'Sanjay'
mydict[2]
'Chandrakant'