How do I sort a dictionary by value?

In order to sort a dictionary based on its values in Python, the elements of the dictionary must first be converted into a list of tuples, with each tuple containing a key-value pair associated with it. After that, you may use the sorted function on this list, and you can specify a unique sorting key depending on the values. A more in-depth explanation is as follows:

Step 1: Create a Dictionary

# Sample dictionary
my_dict = {'apple': 5, 'banana': 2, 'orange': 8, 'grape': 3}

Step 2: Convert Dictionary Items to a List of Tuples

# Convert dictionary items to a list of tuples
dict_items = my_dict.items()

Now, dict_items is a view object that displays a list of a dictionary’s key-value tuple pairs.

Without a doubt! In Python, the items() function of the dictionary allows you to turn dictionary items into a list of tuples through the use of the dictionary. This is how you can accomplish it:

This will output:

List of tuples: [('apple', 5), ('banana', 2), ('orange', 8), ('grape', 3)]

The items() method returns a view object that displays a list of key-value tuple pairs that are included within a dictionary. This view object is converted into a list of tuples by using the list(dict_items) function, as seen in the previous example.

At this point, you are able to make use of this list of tuples for additional processing, such as sorting or iterating through the key-value pairs.

Step 3: Sort the List of Tuples by Values

# Sort the list of tuples by values (ascending order)
sorted_items = sorted(dict_items, key=lambda x: x[1])

In this line, key=lambda x: x[1] specifies that the sorting should be based on the second element of each tuple (the values).

Parameters of the sorted() Method

The sorted() method can accept up to 3 parameters:

  • iterable – The data that will be iterated over. A dictionary, a list, or a tuple could be the object in question.
  • key – an optional value, the function that assists you in carrying out a sort operation that is specific to your needs.
  • reverse – a further value that is optional. It assists you in arranging the sorted data in alphabetical order, either ascending or descending.

Step 4: Print the Sorted List of Tuples

# Print the sorted list of tuples

The output will be a list of tuples representing key-value pairs sorted by values in ascending order.

Additional Step: Sort in Descending Order

If you want to sort the dictionary items in descending order, you can use the reverse=True argument:

# Sort the list of tuples by values in descending order
sorted_items_desc = sorted(dict_items, key=lambda x: x[1], reverse=True)
# Print the sorted list of tuples in descending order

This will give you a list of tuples representing key-value pairs sorted by values in descending order.

This piece of code employs the sorted() function with the key=lambda x: x[1] argument in order to sort the list of tuples according to the values that are the second element of each tuple. When sorting the list in descending order, the reverse=True option is utilized to do this.


For the ascending order example:

[('banana', 2), ('grape', 3), ('apple', 5), ('orange', 8)]

For the descending order example:

[('orange', 8), ('apple', 5), ('grape', 3), ('banana', 2)]

These examples demonstrate how to sort a dictionary by its values using the sorted function and a custom sorting key. Adjust the code based on your specific requirements.

Leave a comment