Sort a Dictionary in the ascending order of Keys in Python
In this tutorial, we will learn various approaches to sort a Dictionary in the ascending order of Keys in Python
A dictionary can be sorted by keys in the ascending order using sorted method in Python.
We will look at the various approaches to sort a dictionary by keys in ascending order in Python.
Approach 1: Sort a dictionary in the ascending order of keys using sorted() and for loop in Python
To sort a dictionary using sorted() method and for loop, we will have the following steps:
- First we initialize a resultant dictionary which will have key value pair in sorted order.
- Then we sort the keys of a dictionary in ascending order using
sorted(). - Then we iterate over the sorted keys using
forloop. - Then we add each key value pair to the resultant dictionary.
The following code will demonstrates sorting a dictionary in the ascending order of keys in Python.
d1 = {'Bob': 60, 'Alice': 43, 'Ram': 80, 'Geeta': 49, 'Shreyan': 95, 'Raj': 68}
sorted_d1 = dict()
for key in sorted(d1.keys(), reverse = False):
sorted_d1[key] = d1[key]
print(sorted_d1)Notice that the sorted method takes two arguments, where the second one is optional.
- The first argument must be of type list. Here we are passing
d1.keys()as input to the first argument ofsorted()method. - The second argument is the
reverse, by default, it isFalse. This means, the elements will be sorted in the ascending order. Whenreverseis set toTrue, the list elements provided in the first argument, which in our case isd1.keys()will be sorted in the descending order. - The
sortedmethod returns the list after sorting the input list based on thereverseargument.
The output of the preceding code will be as follows.
{'Alice': 43, 'Bob': 60, 'Geeta': 49, 'Raj': 68, 'Ram': 80, 'Shreyan': 95}We notice that the resultant dictionary has the keys in the ascending order with their respective values. We also notice that after sorting a dictionary by key, the results shows the students in the ascending order of marks.
Approach 2: Sort a dictionary in the ascending order of keys using list comprehension and sorted in Python
We can also sort a dictionary by ascending order of keys using the same sorted method, but this time using list comprehension.
d1 = {'Bob': 60, 'Alice': 43, 'Ram': 80, 'Geeta': 49, 'Shreyan': 95, 'Raj': 68}
sorted_d1 = { key:d1[key] for key in sorted(d1.keys(), reverse = False)}
print(sorted_d1)This approach is similar to Approach 1, but instead of for loop, the Approach 2 uses list comprehension to sort a dictionary in the ascending order of keys. The output of the preceding code will be as follows.
{'Alice': 43, 'Bob': 60, 'Geeta': 49, 'Raj': 68, 'Ram': 80, 'Shreyan': 95}We notice that the resultant dictionary has the keys in the ascending order with their respective values. We also notice that after sorting a dictionary by key, the results shows the students in the ascending order of marks.
Approach 3: Sort a dictionary in the ascending order of keys using dict(), sorted() and items() in Python
This is the simple one liner approach that creates a sorted version of the dictionary whose keys are in the ascending order.
d1 = {'Bob': 60, 'Alice': 43, 'Ram': 80, 'Geeta': 49, 'Shreyan': 95, 'Raj': 68}
sorted_d1 = dict(sorted(d1.items()))
print(sorted_d1)From the preceding code, we notice that we are first getting a list of items as key value tuples returned by d1.items(). The resultant list is passed as an argument to the sorted() method which returns a list of tuples in the form of (key, value). This is fed to the dict() which takes list of tuple. The resultant dictionary is assigned to sorted_d1. Hence, the output of the preceding code will be as follows.
{'Alice': 43, 'Bob': 60, 'Geeta': 49, 'Raj': 68, 'Ram': 80, 'Shreyan': 95}We notice that the resultant dictionary has the keys in the ascending order with their respective values. We also notice that after sorting a dictionary by key, the results shows the students in the ascending order of marks.
Approach 4: Sort a dictionary in the ascending order of keys using sorted(), lambda and dictionary comprehension in Python
In this approach, we will do the following to sort a dictionary in the ascending order of keys using sorted(), items() and dictionary comprehension.
d1 = {'Bob': 60, 'Alice': 43, 'Ram': 80, 'Geeta': 49, 'Shreyan': 95, 'Raj': 68}
sorted_by_keys = {k: v for k, v in sorted(d1.items(), key=lambda item: item[0], reverse = False)}
print('Before sort')
print(d1)
print('After sort by keys in ascending order using dictionary comprehension')
print(sorted_by_keys)Here, in the preceding code, we are sorting a dictionary by its ascending order of keys in Python using dictionary comprehension, sorted() and lambda.
We notice that the sorted method is provided with two arguments,
- The first argument is the list of tuples represented by d1.items().
- Each item in the list of tuple let's say is represented by variable name
item. Then theitemis of typetupleand each element in a tuple is accessed by it's index position. In case of key and value being the items ofitemtuple, the element at index 0, represented byitem[0]is key and the element at index 1 represented byitem[1]is the value. - Hence, the second argument to the sorted method,
keyis specifying to thesortedmethod to perform the sort operation based on theitem[0]which is the keys amongst the key value pair. - As we need to sort by ascending order of keys, we have also provided the keyword argument
reverseset toFalseas input tosortedmethod.
The output of the preceding code will be as follows.
Before sort
{'Bob': 60, 'Alice': 43, 'Ram': 80, 'Geeta': 49, 'Shreyan': 95, 'Raj': 68}
After sort by keys in ascending order using dictionary comprehension
{'Alice': 43, 'Bob': 60, 'Geeta': 49, 'Raj': 68, 'Ram': 80, 'Shreyan': 95}We notice that the resultant dictionary has the keys in the ascending order with their respective values. We also notice that after sorting a dictionary by key, the results shows the students in the ascending order of marks.