How To Sort A Dictionary In Python

Python Programming

In Python, dictionaries are widely used data structures that allow you to store and retrieve key-value pairs efficiently. However, by default, dictionaries in Python do not maintain any specific order. If you want to sort the dictionary based on either the keys or the values, you need to use some special techniques. In this article, I will guide you through the process of sorting a dictionary in Python.

Sorting a Dictionary by Keys

When you want to sort a dictionary by its keys, you can use the built-in sorted() function along with the items() method of the dictionary. The sorted() function returns a new list of the dictionary’s items, sorted based on their keys.

Let me show you an example:


my_dict = {'c': 3, 'a': 1, 'b': 2}
sorted_dict = sorted(my_dict.items())
print(sorted_dict)

The output of the above code will be:


[('a', 1), ('b', 2), ('c', 3)]

As you can see, the sorted_dict is a sorted list of tuples, where each tuple contains a key-value pair from the original dictionary. The list is sorted in ascending order based on the keys.

Sorting a Dictionary by Values

If you want to sort the dictionary based on its values instead of the keys, you can use the sorted() function with a custom key function. The key function should return the value that will be used for sorting.

Here’s an example:


my_dict = {'c': 3, 'a': 1, 'b': 2}
sorted_dict = sorted(my_dict.items(), key=lambda x: x[1])
print(sorted_dict)

The output will be:


[('a', 1), ('b', 2), ('c', 3)]

In the above code, the key=lambda x: x[1] defines a lambda function that takes each item of the dictionary and returns its value. The sorted() function uses this key function to sort the dictionary based on the values.

Sorting a Dictionary in Descending Order

If you want to sort the dictionary in descending order, you can pass the reverse=True argument to the sorted() function.

Here’s an example:


my_dict = {'c': 3, 'a': 1, 'b': 2}
sorted_dict = sorted(my_dict.items(), key=lambda x: x[1], reverse=True)
print(sorted_dict)

The output will be:


[('c', 3), ('b', 2), ('a', 1)]

By specifying reverse=True, the sorted() function sorts the dictionary in descending order based on the values.

Conclusion

Sorting a dictionary in Python can be achieved by using the sorted() function along with the appropriate key function. By sorting a dictionary, you can easily retrieve its items in a specific order, either by keys or values. Remember that dictionaries are unordered by default, so you need to use these techniques whenever order matters in your code.

Next time you need to sort a dictionary in Python, remember the techniques discussed in this article. Happy coding!