In this article, we’ll learn how to sort a list of dictionaries by one or more keys using the itemgetter() function from Python’s operator module. It helps fetch values based on given keys or indexes and is often used as a key function in sorting for cleaner and faster code.
Example 1: Sort by a Single Key
from operator import itemgetter
d = [
{"name": "Nandini", "age": 20},
{"name": "Manjeet", "age": 20},
{"name": "Nikhil", "age": 19}
]
print("Sorted by age: ",sorted(d, key=itemgetter('age')))
Output
Sorted by age: [{'name': 'Nikhil', 'age': 19}, {'name': 'Nandini', 'age': 20}, {'name': 'Manjeet', 'age': 20}]
Explanation: sorted(data, key=itemgetter('age')): Sorts the list of dictionaries based on the 'age' key value.
Example 2: Sort by Multiple Keys
from operator import itemgetter
d = [
{"name": "Nandini", "age": 20},
{"name": "Manjeet", "age": 20},
{"name": "Nikhil", "age": 19}
]
print("Sorted by age and name: ",sorted(d, key=itemgetter('age', 'name')))
Output
Sorted by age and name: [{'name': 'Nikhil', 'age': 19}, {'name': 'Manjeet', 'age': 20}, {'name': 'Nandini', 'age': 20}]
Example 3: Sort in Descending Order
from operator import itemgetter
d = [
{"name": "Nandini", "age": 20},
{"name": "Manjeet", "age": 20},
{"name": "Nikhil", "age": 19}
]
print("Sorted by age (descending): ", sorted(d, key=itemgetter('age'), reverse=True))
Output
Sorted by age (descending): [{'name': 'Nandini', 'age': 20}, {'name': 'Manjeet', 'age': 20}, {'name': 'Nikhil', 'age': 19}]