Tutorial Playlist
Understanding data structures is pivotal to mastering Python programming. One such fundamental data structure is the dictionary. Knowing how to sort dictionary by value in Python can elevate the efficiency and readability of your code. This tutorial dives into the intricate nuances of sorting dictionaries by values in Python, a must-know for every Python enthusiast.
In Python, dictionaries are akin to real-world dictionaries, where you have a ‘key’ and its associated ‘value’. Though dictionaries are inherently unordered, there are scenarios where you might want to sort them, particularly by values, to meet specific requirements or enhance data analysis. This tutorial takes you through each of these situations in detail.
Dictionaries serve as a key player in data storage in Python. Each key-value pair holds its unique significance. Let’s delve into why sorting dictionaries becomes imperative:
Moreover, the intricacies of sorting dictionaries extend beyond the mere action of sorting. One can sort:
To sort a dictionary by its keys in Python, you can use the sorted() function along with a dictionary comprehension. Here's an example:
Code:
# Original dictionary
my_dict = {"banana": 3, "apple": 1, "cherry": 2}
# Sort the dictionary by keys
sorted_dict = {key: my_dict[key] for key in sorted(my_dict)}
print(sorted_dict)
In this example, the sorted() function sorts the dictionary's keys alphabetically, and a new dictionary is created with the sorted keys. sorted(my_dict) sorts the keys of the my_dict dictionary alphabetically. A new dictionary, sorted_dict, is created using dictionary comprehension to maintain the original key-value pairs with sorted keys.
This is similar to the example above but with a focus on sorting the dictionary and not necessarily creating a new one:
Code:
# Original dictionary
my_dict = {"banana": 3, "apple": 1, "cherry": 2}
# Sort the dictionary by keys in place
my_dict = {key: my_dict[key] for key in sorted(my_dict)}
print(my_dict)
In this code, my_dict dictionary is updated with its keys sorted in alphabetical order.
If you only want to display the sorted keys without altering the original dictionary, you can do it like this:
Code:
# Original dictionary
my_dict = {"banana": 3, "apple": 1, "cherry": 2}
# Get sorted keys
sorted_keys = sorted(my_dict.keys())
print(sorted_keys)
To display the sorted keys without modifying the original dictionary, you can use the sorted() function with my_dict.keys(). The sorted keys are stored in the sorted_keys variable and can be printed.
Code:
# Original dictionary
my_dict = {"banana": 3, "apple": 1, "cherry": 2}
# Sort the dictionary by keys and create a list of key-value pairs
sorted_items = sorted(my_dict.items())
print(sorted_items)
The sorted() function is used on my_dict.items() to create a list of key-value pairs sorted by keys.
To sort dictionary by value in Python, you can use the sorted() function with a custom sorting key. Here is an example:
Code:
# Original dictionary
my_dict = {"banana": 3, "apple": 1, "cherry": 2}
# Sort the dictionary by values
sorted_dict = {key: val for key, val in sorted(my_dict.items(), key=lambda x: x[1])}
print(sorted_dict)
In the above example, the sorted() function sorts the dictionary by values, creating a new dictionary with keys sorted by their corresponding values. The code sorts the dictionary items by values in ascending order, creating a new dictionary sorted_dict with keys ordered by their corresponding values.
Code:
# Original dictionary
my_dict = {"banana": 3, "apple": 1, "cherry": 2}
# Sort the dictionary by values and create a list of key-value pairs
sorted_items = sorted(my_dict.items(), key=lambda x: x[1])
print(sorted_items)
In this example, both keys and values are sorted in alphabetical order based on values.
The sorted() function is used on my_dict.items() with a custom sorting key that sorts by the second element (value) of each pair.
In this example, we have a dictionary of students where each student is represented by a nested dictionary. We want to sort the students by their ages (inner key).
Code:
# Original dictionary with nested dictionaries
students = {
"John": {"age": 25, "grade": "A"},
"Alice": {"age": 22, "grade": "B"},
"Bob": {"age": 28, "grade": "B"},
}
# Sort the dictionary by student age
sorted_students = {key: value for key, value in sorted(students.items(), key=lambda x: x[1]["age"])}
print(sorted_students)
This code sorts the students by age and creates a new dictionary with students ordered by their ages.
In this example, we have a dictionary where values are complex data types like tuples. We want to sort the dictionary based on a specific element within the tuple.
Code:
# Original dictionary with complex values (tuples)
data = {
"item1": (3, "apple"),
"item2": (1, "banana"),
"item3": (2, "cherry"),
}
# Sort the dictionary by the second element (string) in the tuple
sorted_data = {key: value for key, value in sorted(data.items(), key=lambda x: x[1][1])}
print(sorted_data)
This code sorts the dictionary by the second element in the tuple (the string) and creates a new dictionary with items ordered alphabetically.
In this example, we have a dictionary where values are lists, and we want to sort the dictionary by the length of the lists.
Code:
# Original dictionary with lists as values
data = {
"list1": [1, 2, 3],
"list2": [4, 5],
"list3": [6, 7, 8, 9],
}
# Sort the dictionary by the length of the lists
sorted_data = {key: value for key, value in sorted(data.items(), key=lambda x: len(x[1]))}
print(sorted_data)
This code sorts the dictionary by the length of the lists and creates a new dictionary with lists ordered by their lengths.
These examples demonstrate more complex sorting scenarios with dictionaries, including nested dictionaries, complex data types within values, and sorting based on custom criteria.
In this example, we have a dictionary where each key corresponds to a person's name, and each value is a dictionary containing attributes like age, city, and gender. We want to sort the dictionary based on the age of each person.
Code:
# Original dictionary with nested dictionaries
people = {
"John": {"age": 25, "city": "New York", "gender": "Male"},
"Alice": {"age": 22, "city": "Los Angeles", "gender": "Female"},
"Bob": {"age": 28, "city": "Chicago", "gender": "Male"},
}
# Sort the dictionary by the age of each person
sorted_people = {key: value for key, value in sorted(people.items(), key=lambda x: x[1]["age"])}
print(sorted_people)
This code sorts the dictionary based on the age of each person, creating a new dictionary with people ordered by their ages.
In this example, we have a dictionary with complex values representing products. We want to sort the products based on their prices.
Code:
# Original dictionary with complex values representing products
products = {
"product1": {"name": "Apple", "price": 1.0, "category": "Fruit"},
"product2": {"name": "Banana", "price": 0.5, "category": "Fruit"},
"product3": {"name": "Laptop", "price": 1000.0, "category": "Electronics"},
}
# Sort the dictionary by product price
sorted_products = {key: value for key, value in sorted(products.items(), key=lambda x: x[1]["price"])}
print(sorted_products)
This code sorts the dictionary of products based on their prices, creating a new dictionary with products ordered by price.
In this example, we have a dictionary where the values are custom objects of a class called Person. We want to sort the dictionary based on a specific attribute of the Person objects, such as their ages.
Code:
# Custom class definition
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
# Original dictionary with custom objects as values
people = {
"person1": Person("John", 25),
"person2": Person("Alice", 22),
"person3": Person("Bob", 28),
}
# Sort the dictionary by the age attribute of the custom objects
sorted_people = {key: value for key, value in sorted(people.items(), key=lambda x: x[1].age)}
print(sorted_people)
This code sorts the dictionary of custom objects based on the age attribute of the Person objects, creating a new dictionary with people ordered by age.
Sorting dictionaries by value in Python is more than just a coding technique; it’s an asset in data handling, ensuring streamlined operations, efficient data analysis, and enhanced readability. As the world of Python continues to grow, mastering such intricacies becomes paramount. Consider delving deeper into Python’s world with upGrad’s comprehensive courses, equipping yourself with the knowledge to tackle real-world challenges adeptly.
1. Sort dictionary by value in Python example
Utilize the sorted() function combined with a lambda function: sorted(dict.items(), key=lambda x: x[1]).
2. Sort dictionary by value python descending
Use the reverse=True parameter with the sorted() function.
3. Sort dictionary by key Python
Simply use: sorted(dict.items()).
4. Python sort dictionary by key=lambda
It refers to using a lambda function to specify the key for sorting: sorted(dict.items(), key=lambda x: x[0]).
5. Sort dictionary by value python without lambda
One can use itemgetter: from operator import itemgetter and then sorted(dict.items(), key=itemgetter(1)).
PAVAN VADAPALLI
Popular
Talk to our experts. We’re available 24/7.
Indian Nationals
1800 210 2020
Foreign Nationals
+918045604032
upGrad does not grant credit; credits are granted, accepted or transferred at the sole discretion of the relevant educational institution offering the diploma or degree. We advise you to enquire further regarding the suitability of this program for your academic, professional requirements and job prospects before enrolling. upGrad does not make any representations regarding the recognition or equivalence of the credits or credentials awarded, unless otherwise expressly stated. Success depends on individual qualifications, experience, and efforts in seeking employment.
upGrad does not grant credit; credits are granted, accepted or transferred at the sole discretion of the relevant educational institution offering the diploma or degree. We advise you to enquire further regarding the suitability of this program for your academic, professional requirements and job prospects before enr...