Tuesday, July 19, 2022

Python Dictionary: Zero to Hero with Examples | by Amit Chauhan | Jul, 2022 - Medium - Dictionary

Learning dictionary for data science and machine learning applications

Photo by Alex Chumak on Unsplash

Introduction

Python scripts or programs are generally impossible to exist without the use of lists and dictionaries. As we know, dictionaries play a huge role in indexing; we all have already been familiar with the basic concept of Dictionaries from the previous articles. But in this article, we’ll be exploring advanced methods like turning a dictionary into a list or two lists with real-life examples. So let’s have a recap…

What is a Dictionary?

Theoretically, a dictionary is to store data in key-value pairs. And these items are accessed using keys and not their positions, unlike lists. The values in a dictionary can be of any type (string, integers, floating-point numbers, etc.).

Syntax:

A dictionary is defined by an enclosed comma-separated list of key-value pairs in curly braces.

D = {(key):(value),(key):(value),(key):(value),(key):(value)}

Example:

Let’s look at an example of student roll numbers. Consider a dictionary with students’ roll numbers and their names. Practically, there might be many students with the same names. Hence it would be very difficult to get the details. This is where the concept of dictionaries can help us. Each name is stored under a number. So when we search for a number, we get all the details of one student without any mess. You can also enter a new record into a dictionary very easily.

Program Example:

#searching for recordsSearch_no = {45:’Meena’, 56:’Raj’, 3:’Ashley’, 6:’Balu’, 20:’Hari’}print(Search_no[3])
print(Search_no[45])
print(Search_no[20])
Output:
Ashley
Meena
Hari
#entering a new recordSearch_no = {45:’Meena’, 56:’Raj’, 3:’Ashley’, 6:’Balu’, 20:’Hari’}Search_no[1] = “Ashi”
print(Search_no)
Output:{45: ‘Meena’, 56: ‘Raj’, 3: ‘Ashley’, 6: ‘Balu’, 20: ‘Hari’, 1: ‘Ashi’}

Operators in dictionary

Let us now have a look at some of the operators used in Dictionaries.

  • len(D): The len() operator is to return the number of entries stored in the dictionary. In simple words, to get the number of key-value pairs.

Program:

Search_no = {45:’Meena’, 56:’Raj’, 3:’Ashley’, 6:’Balu’, 20:’Hari’, 77:’Priya’, 78:’Shankar’, 2:’Adhil’}print(len(Search_no))Output:8
  • del D[k]: The ‘del D[k]’ operator is to delete the key along with its value.
Program:Search_no = {45:’Meena’, 56:’Raj’, 3:’Ashley’, 6:’Balu’, 20:’Hari’, 77:’Priya’, 78:’Shankar’, 2:’Adhil’}del Search_no[2]print(Search_no)Output:{45: ‘Meena’, 56: ‘Raj’, 3: ‘Ashley’, 6: ‘Balu’, 20: ‘Hari’, 77: ‘Priya’, 78: ‘Shankar’}
  • k in D: The ‘k in D’ operator is similar to a true/false statement. If the Key exists then it will return true.
Program:Search_no = {45:’Meena’, 56:’Raj’, 3:’Ashley’, 6:’Balu’, 20:’Hari’, 77:’Priya’, 78:’Shankar’, 2:’Adhil’}print(45 in Search_no)
print(49 in Search_no)
Output:
True
False
  • k not in D: The ‘k not in D’ operator is similar to a true/false statement. If the key doesn’t exist, it returns the output as false.
Program:Search_no = {45:’Meena’, 56:’Raj’, 3:’Ashley’, 6:’Balu’, 20:’Hari’, 77:’Priya’, 78:’Shankar’, 2:’Adhil’}print(3 not in Search_no)
print(49 not in Search_no)
Output:
False
True

Important methods in a dictionary

  • Pop and popitem()

pop():

We do know that the pop() method is used to take away a specific element in a list. This method can also be applied to dictionaries. But the difference is that lists are ordered, whereas dictionaries are unordered. Hence pop() will act differently in dictionaries. You can remove a key-value pair by specifying the key in the pop() argument.

Note: KeyError will be raised when the key is not found.

Program:#1Search_no = {45:’Meena’, 56:’Raj’, 3:’Ashley’, 6:’Balu’, 20:’Hari’, 77:’Priya’, 78:’Shankar’, 2:’Adhil’}search = Search_no.pop(2)
print(Search_no)
Output:
{45: ‘Meena’, 56: ‘Raj’, 3: ‘Ashley’, 6: ‘Balu’, 20: ‘Hari’, 77: ‘Priya’, 78: ‘Shankar’}
#2Search_no = {45:’Meena’, 56:’Raj’, 3:’Ashley’, 6:’Balu’, 20:’Hari’, 77:’Priya’, 78:’Shankar’}search = Search_no.pop(4)
print(search)
Output:
search = Search_no.pop(4)
KeyError: 4

popitem():

Compared to pop(), popitem() is a little different. This method does not take any argument. But once this method is executed, it removes the last key-value pair present in the dictionary.

Note: KeyError will be raised if popitem() is applied to an empty dictionary.

Program:#1Search_no = {45:’Meena’, 56:’Raj’, 3:’Ashley’,
6:’Balu’, 20:’Hari’, 77:’Priya’,
78:’Shankar’}
(roll_no, name)= Search_no.popitem()
print(roll_no, name)
Output:
78 Shankar
#2Search_no = {}(roll_no, name)= Search_no.popitem()
print(roll_no, name)
Output:
(roll_no, name)= Search_no.popitem()
KeyError: ‘popitem(): dictionary is empty’

Accessing non-existing keys

In dictionaries, it is evident from the above examples that when we access an element that doesn’t exist, the program would throw an error. Now, this can be prevented easily by using the ‘in’ operator. Let’s see how:

Program:Search_no = {45:’Meena’, 56:’Raj’, 3:’Ashley’,
6:’Balu’, 20:’Hari’, 77:’Priya’,
78:’Shankar’}
no = 49if no in Search_no:
print(Search_no[no])
else:
print(no, “is not in the dictionary”)
Output:
49 is not in the dictionary

Explanation:

In this program, we are using the if-else condition along with the ‘in’ operator to access elements. If the element we are searching for is present, it will execute the first statement, or else, it will pass the second statement.

Tkinter: Basic GUI Widgets Elements with Python Example

Graphical user interface with tkinker python library

amitprius.medium.com

Numpy Vectorization for Faster Operations With Python

A small comparison of codes between regular and Numpy codes

amitprius.medium.com

copy()

The copy() method is to create a copy of the existing dictionary. This is very handy when you want to play around with the data or make any minor changes to the duplicated dictionary without actually losing or creating the existing dictionary.

Program:Search_no = {45:’Meena’, 56:’Raj’, 3:’Ashley’, 6:’Balu’}s_no = Search_no.copy()Search_no[45]= “Sheena”
print(s_no)
print(Search_no)
Output:
{45: ‘Meena’, 56: ‘Raj’, 3: ‘Ashley’, 6: ‘Balu’}
{45: ‘Sheena’, 56: ‘Raj’, 3: ‘Ashley’, 6: ‘Balu’}

Explanation:

The above program shows us how to make a copy of a dictionary by changing one of the values.

Now, the problem with this copy() method is that it’s a shallow copy. If the value in a dictionary is complex like lists, then the in-places changes in this object and can also affect the copy as well. Let’s look at an example:

Program 1:Students = { “Meena”:{“Subject”:”English”, “Marks”: 69},
“Raj”:{“Subject”:”Maths”, “Marks”: 80},
“Sharon”:{“Subject”:”Science”, “Marks”: 96}}
Students2 = Students.copy()Students[“Meena”][“Marks”] = 98print(Students)
print(Students2)
Output:{‘Meena’: {‘Subject’: ‘English’, ‘Marks’: 98}, ‘Raj’: {‘Subject’: ‘Maths’, ‘Marks’: 80}, ‘Sharon’:{‘Subject’: ‘Science’, ‘Marks’: 96}}{‘Meena’: {‘Subject’: ‘English’, ‘Marks’: 98}, ‘Raj’: {‘Subject’: ‘Maths’, ‘Marks’: 80},‘Sharon’: {‘Subject’: ‘Science’, ‘Marks’: 96}}

Explanation:

What happens here is that, when handling complex dictionaries, the changes made in the original have been reflected in the copy as well. You can see that when one of the values of the original dictionary: “Students”, is changed to 98, the value in the copy has also been updated. Let’s see how to avoid this:

Program 2:Students = { “Meena”:{“Subject”:”English”, “Marks”: 69},
“Raj”:{“Subject”:”Maths”, “Marks”: 80},
“Sharon”:{“Subject”:”Science”, “Marks”: 96}}
Students2 = Students.copy()Students[“Meena”] = {“Subject”:”English”, “Marks”: 98}print(Students)
print(Students2)
Output:{‘Meena’: {‘Subject’: ‘English’, ‘Marks’: 98}, ‘Raj’: {‘Subject’: ‘Maths’, ‘Marks’: 80}, ‘Sharon’: {‘Subject’: ‘Science’, ‘Marks’: 96}}{‘Meena’: {‘Subject’: ‘English’, ‘Marks’: 69}, ‘Raj’: {‘Subject’: ‘Maths’, ‘Marks’: 80}, ‘Sharon’: {‘Subject’: ‘Science’, ‘Marks’: 96}}

Explanation:

To avoid changes being made to the copy, all you have to do is, enter the entire dictionary that you want to make the change. In this case, we are making changes to only the “Meena” dictionary. Hence, assign the updated information of that entire dictionary alone.

clear()

The clear() method is nothing but to clear the content of a dictionary. Using this method will not delete the dictionary but will just set it to an empty dictionary.

Program:Students = { “Meena”:{“Subject”:”English”, “Marks”: 69},
“Raj”:{“Subject”:”Maths”, “Marks”: 80},
“Sharon”:{“Subject”:”Science”, “Marks”: 96}}
Students.clear()
print(Students)
Output:{}

update()

The update() method is to merge two different dictionaries into one. This means it merges the key values of one dictionary into another by overwriting the values of the exact key.

Program:Search_no_1 = {45:’Meena’, 56:’Raj’, 3:’Ashley’, 6:’Balu’}
Search_no_2 = {45:’Alok’, 33:’Shyam’, 5:’Aliya’, 70:’Sho’}
Search_no_1.update(Search_no_2)
print(Search_no_1)
Output:
{45: ‘Alok’, 56: ‘Raj’, 3: ‘Ashley’, 6: ‘Balu’, 33: ‘Shyam’, 5: ‘Aliya’, 70: ‘Sho’}

Explanation:

As you can see, in the above program, we have created 2 separate dictionaries — Search_no_1 and Search_no_2. We are then using the update() method -“Search_no_1.update(Search_no_2)”. This means that all the key-value pairs of the Search_no_2 dictionary get merged into the Search_no_1 dictionary. Also, the key-value “45:’Meena’” gets updated to “45:’Alok’” (highlighted in black).

Iterate over dictionaries

Coming to iteration, there are only two methods you actually need to iterate over a dictionary. Let’s take a look:

key(), value()

Program:

dic = {“x”:56, “y”:22, “z”:50}for key in dic:
print(key)
for value in dic.values():
print(value)
Output:
x
y
z
56
22
50

Explanation:

In the above program, we are using a for loop to iterate all the keys and values in the dictionary. Using the for loop, we are mainly using two methods: key() and value(). The key() method will only return the keys of the dictionary, and the value() method will only return the values of the dictionary.

Connection between lists and dictionaries

As discussed in the beginning, lists and dictionaries are very efficient in Python program. So, once you get familiar with these two concepts, you might have thought about whether you can change lists to dictionaries or dictionaries to lists. The answer is yes! Let’ see:

Turning dictionaries into lists

Converting a dictionary to a list can be done using only three methods:

item(), keys(), values()

Program:

dic = {“x”:56, “y”:22, “z”:50}item_d = dic.items()
items = list(item_d)
print(items)keys_d = dic.keys()
keys = list(keys_d)
print(keys)values_d = dic.values()
values = list(values_d)
print(values)Output:
[(‘x’, 56), (‘y’, 22), (‘z’, 50)]
[‘x’, ‘y’, ‘z’]
[56, 22, 50]

Explanation:

In the above program, we have converted a dictionary into a list in three different ways. The first way: we use the item() method that returns a dictionary’s key-value pair in the form of a tuple. After this, we are using the list() method to convert the created tuple to a list.

The second way is by using the key() method followed by the list(). And the third way is by using the values() method followed by a list().

Turning lists into dictionaries

You saw how to convert a dictionary to a list. Let’s now do the opposite. To convert a list to a dictionary, we use two methods:

dict(), zip()

Program:

li = [“x”, “y”, “z”, “w”]
ti = [“a”, “b”, “c”]
dic = dict(zip(li, ti))
print(dic)
Output:
{‘x’: ‘a’, ‘y’: ‘b’, ‘z’: ‘c’}

Explanation:

Our main goal in this program is to create a dictionary with the key and values from the two lists. So, our first step is to create two lists. After this, we are using the zip() and dict() methods to convert the list to dictionaries. The zip() function is to return a zip object, where the first item, second item, and so on are paired together. The dict() function is a function to create a dictionary. And finally, we are printing the result where we obtain the output as shown.

Conclusion:

In conclusion, this article has covered some of the advanced concepts of Dictionaries. I strongly recommend experimenting with these methods by applying them in real-time projects using python.

I hope you like the article. Reach me on my LinkedIn and twitter.

Recommended Articles

1. 15 Most Usable NumPy Methods with Python
2. NumPy: Linear Algebra on Images
3. Exception Handling Concepts in Python
4. Pandas: Dealing with Categorical Data
5. Hyper-parameters: RandomSeachCV and GridSearchCV in Machine Learning
6. Fully Explained Linear Regression with Python
7. Fully Explained Logistic Regression with Python
8. Data Distribution using Numpy with Python
9. 40 Most Insanely Usable Methods in Python
10. 20 Most Usable Pandas Shortcut Methods in Python

Adblock test (Why?)

No comments:

Post a Comment