How to sort a Python Dictionary

Estimated reading time: 3 minutes

In our Python Overview Interview Questions we started off the process of trying to prepare you how to answer any questions that may come up in an interview scenario.

We then moved on to show how to discuss Python Dictionary Interview Questions and what may come up.

One of the questions that you may be asked is how to deal with sorting a python dictionary using a key.

Some of the ways that you may want to sort are as follows, read on for code examples:

Python Dictionary Interview Questions

How to use the sorted and Items Method in Python

In the below code, we have created an empty dictionary and then appened in three key-value pairs.

The first print statement just prints out the dictionary in its unordered fashion.

The second print statement does two things:

  1. It, first of all, sorts the empty_dict1 items in order
  2. Then it goes and creates them in a dictionary.

The reason we have to do step two is that the sorted() function returns a sorted list, as a result, it is not in a dictionary format.

empty_dict1 = {}

empty_dict1['Key2'] = '2'
empty_dict1['Key1'] = '1'
empty_dict1['Key3'] = '3'
print("Your unsorted by key dictionary is:",empty_dict1)
print("Your sorted by key dictionary is:",dict(sorted(empty_dict1.items())))

Result:
Your unsorted by key dictionary is: {'Key2': '2', 'Key1': '1', 'Key3': '3'}
Your sorted by key dictionary is: {'Key1': '1', 'Key2': '2', 'Key3': '3'}

How to use List comprehension to sort a dictionary

As a follow on to the above, we could also just iterate over the dictionary using list comprehensions.

The below creates a variable called d. This is set equal to the output of the list comprehension.

Note that inside the {} brackets you have a:b, this purely creates two sets of values that will be used as the output to generate the dictionary.

You will also see that this creates index values, starting at 0, not the actual values we want.

As a result, we just drop these index values and replace them with the values we want using the pop() method.

The final two print statements show the before and after of sorting the dictionary!

d = {a:b for a, b in enumerate(empty_dict1.values())}
print(d)
d["Key2"] = d.pop(0) #replaces 0 with Key2
d["Key1"] = d.pop(1) #replaces 1 with Key1
d["Key3"] = d.pop(2) #replaces 2 with Key3
print(d)
print(dict(sorted(d.items())))

Result:
{0: '2', 1: '1', 2: '3'}
{'Key2': '2', 'Key1': '1', 'Key3': '3'}
{'Key1': '1', 'Key2': '2', 'Key3': '3'}