Python’s Dictionary In Details: Python Programming | by Rashida Nasrin Sucky | Towards Data Science

Dictionary is a composite datatype in the Python programming language. In a way, it is similar to lists. Lists are a collection of elements. Dictionaries are a collection of key, value pairs. Solutions to many programming problems can be easy and more concise with dictionaries. Here I am going to explain all the important methods in the dictionary and some problem-solving with examples.
Let’s define a simple dictionary.
d = {'a': 1, 'b':5, 'c': 3, 'd': 2, 'e': 8, 'f': 6}
Add a new element in this dictionary:
Add a new element in this dictionary:
d['s'] = 12print(d)
Dictionary d looks like this now:
{'a': 1, 'b': 5, 'c': 3, 'd': 2, 'f': 6, 's': 12}
2. delete the element e from the dictionary d.
del d['e']
3. Get the value of the key a.
d['a']#Output: 1
4. The value of ‘a’ looks too small. Update the value of element a to 10.
d['a'] = 10
5. Add 3 to the value of the element s.
d['s'] += d['s'] + 3
6. Check the length of the dictionary d. If it is less than 9, then add three more elements to it.
if len(d) < 8:    d.update({'t': 21, 'h': 9, 'p':14})print(d)'''Output:{'a': 10, 'b': 5, 'c': 3, 'd': 2, 'f': 6, 's': 12, 't': 21, 'h': 9, 'p': 14}'''
7. Make a list of all the keys.
d.keys()##Output looks like this:dict_keys([‘a’, ‘b’, ‘c’, ‘d’, ‘f’, ‘s’, ‘t’, ‘h’, ‘p’])
8. Make a list of all the values.
d.values()##Output looks like this:dict_values([10, 5, 3, 2, 6, 27, 21, 9, 14])
9. Find out which alphabet has the biggest value.
max = 0max_key = 'a'for k, v in d.items():    if v > max:        max_key = k        max = d[max_key]print(max_key)
The answer came out to be ‘t’.
10. Sort the keys of the dictionary d by the values in ascending order.
sorted(d, key=lambda x: d[x])#Output:['d', 'c', 'b', 'f', 'h', 'p', 't', 's']
11. Find out how many times each word appeared in the following sentences.
sentences = "I love my country. My country is the best in the world. We have the best athletes in the world."
Let’s make a dictionary where the keys will be the words in these sentences and the values will be the frequency that the words appeared.
These are steps to solve this problem:
a. Initialize an empty dictionary ‘sen_map’
b. Make the sentences all lower case
c. Iterate over each word in the sentences
d. Check if a word exists in the sen_map
e. If not then add the word with a value of 1
f. Otherwise, update the value of that word by 1
sen_map = {}  sentences = sentences.lower() for i in sentences.split():     if i not in sen_map:           sen_map[i] = 1      sen_map[i] += 1  sen_map'''Output{'i': 2,  'love': 2,  'my': 3,  'country.': 2,  'country': 2,  'is': 2,  'the': 5,  'best': 3,  'in': 3,  'world.': 3,  'we': 2,  'have': 2,  'athletes': 2}'''
Dictionaries can be nested like lists. Here is an example:
Gold_medals = {'USA': {'Wrestling': 3, 'Long Jump': 3, 'Basketball': 5},              'China': {'Wrestling': 1, 'Long Jump': 5, 'Basketball': 3},              'England': {'Wrestling': 2, 'Long Jump': 7, 'Basketball': 0}}
12. How many gold medals did the USA win in the long jump?
Gold_medals['USA']['Long Jump']
The output is 3 as we can see in the dictionary above.
Another way of organizing information in dictionaries is on a list.
Here is an example:
students = [{'Name': 'John Smith', 'Age': 12, 'Score': 90},           {'Name': 'Laila Jones', 'Age': 11, 'Score': 82},           {'Name': 'Omar Martinez', 'Age': 10, 'Score': 70},           {'Name': 'Romana Raha', 'Age': 13, 'Score': 78},]
13. Return the name of the student who scored the highest in the class.
Let’s solve this step by step. First sort ‘students’ in descending order.
sorted(students, key=lambda x: x['Score'], reverse=True)#Output:'''[{'Name': 'John Smith', 'Age': 12, 'Score': 90},  {'Name': 'Laila Jones', 'Age': 11, 'Score': 82},  {'Name': 'Romana Raha', 'Age': 13, 'Score': 78},  {'Name': 'Omar Martinez', 'Age': 10, 'Score': 70}]'''
Capture the first dictionary of the list ‘students’.
sorted(students, key=lambda x: x['Score'], reverse=True)[0]'''Output{'Name': 'John Smith', 'Age': 12, 'Score': 90}'''
Finally, get the name of the student.
sorted(students, key=lambda x: x['Score'], reverse=True)[0]['Name']
This one line of code will return the name of the student. That is, ‘John Smith’.
I tried to explain the methods of dictionaries first and then presented some examples to show how to work with dictionaries. I hope this was helpful.
Here is the video tutorial on Dictionary: