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
print(sorted_items)
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
print(sorted_items_desc)
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.
Output
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.