Sort a Dictionary in the descending order of Keys in Python
A dictionary can be sorted by keys in the descending order using sorted
method in Python.
We will look at the various approaches to sort a dictionary by keys in descending order in Python.
Approach 1: Sort a dictionary in the descending 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 descending order using
sorted()
. - Then we iterate over the sorted keys using
for
loop. - Then we add each key value pair to the resultant dictionary.
The following code will demonstrates sorting a dictionary in the descending order of keys in Python.
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 descending order. Whenreverse
is set toTrue
, the list elements provided in the first argument, which in our case isd1.keys()
will be sorted in the descending order. - The
sorted
method returns the list after sorting the input list based on thereverse
argument.
The output of the preceding code will be as follows.
We notice that the resultant dictionary has the keys in the descending order with their respective values. We also notice that after sorting a dictionary by key, the results shows the students in the descending order of marks.
Approach 2: Sort a dictionary in the descending order of keys using list comprehension and sorted in Python
We can also sort a dictionary by descending order of keys using the same sorted
method, but this time using list comprehension.
This approach is similar to Approach 1, but instead of for
loop, the Approach 2 uses list comprehension to sort a dictionary in the descending order of keys. The output of the preceding code will be as follows.
We notice that the resultant dictionary has the keys in the descending order with their respective values. We also notice that after sorting a dictionary by key, the results shows the students in the descending order of marks.
Approach 3: Sort a dictionary in the descending 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 descending order.
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). We also set the reversed
to True
as we are expecting the dictionary items to be in the descending order of keys. The reversed list of tuples is then fed as input argument 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.
We notice that the resultant dictionary has the keys in the descending order with their respective values. We also notice that after sorting a dictionary by key, the results shows the students in the descending order of marks.
Approach 4: Sort a dictionary in the descending 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 descending order of keys using sorted()
, items()
and dictionary comprehension.
Here, in the preceding code, we are sorting a dictionary by its descending 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 theitem
is of typetuple
and each element in a tuple is accessed by it's index position. In case of key and value being the items ofitem
tuple, 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,
key
is specifying to thesorted
method to perform the sort operation based on theitem[0]
which is the keys amongst the key value pair. - As we need to sort by descending order of keys, we have also provided the keyword argument
reverse
set toTrue
as input argument tosorted
method.
The output of the preceding code will be as follows.
We notice that the resultant dictionary has the keys in the descending order with their respective values. We also notice that after sorting a dictionary by key, the results shows the students in the descending order of marks.