The itemgetter
function from Python's operator
module creates a callable that retrieves items from objects using indices (for sequences like lists/tuples) or keys (for mappings like dictionaries). It is efficient and commonly used with functions like sorted()
, max()
, and min()
for clean, readable code.
from operator import itemgetter
-
Basic Usage with a List
data = ['a', 'b', 'c', 'd'] get_second = itemgetter(1) print(get_second(data)) # Output: 'b' get_multiple = itemgetter(1, 3) print(get_multiple(data)) # Output: ('b', 'd')
-
Using with Dictionaries
person = {'name': 'Alice', 'age': 30, 'job': 'Engineer'} get_age = itemgetter('age') print(get_age(person)) # Output: 30
-
Sorting a List of Tuples
students = [('Alice', 85, 20), ('Bob', 75, 22), ('Charlie', 90, 21)] # Sort by grade (index 1) sorted_by_grade = sorted(students, key=itemgetter(1)) print(sorted_by_grade) # Output: [('Bob', 75, 22), ('Alice', 85, 20), ('Charlie', 90, 21)]
-
Sorting a List of Dictionaries by Multiple Keys
people = [ {'name': 'Alice', 'age': 30}, {'name': 'Bob', 'age': 25}, {'name': 'Charlie', 'age': 30} ] # Sort by 'age', then 'name' sorted_people = sorted(people, key=itemgetter('age', 'name')) print(sorted_people) # Output: [{'name': 'Bob', 'age': 25}, {'name': 'Alice', 'age': 30}, {'name': 'Charlie', 'age': 30}]
-
Finding Maximum Using
itemgetter
max_student = max(students, key=itemgetter(1)) print(max_student) # Output: ('Charlie', 90, 21)
itemgetter(1)
is equivalent tolambda x: x[1]
.- Advantages of
itemgetter
:- Readability: Clearly expresses intent.
- Performance: Faster for large datasets due to C-level optimization.
- Use
itemgetter
to cleanly extract items by index/key. - Ideal for sorting, finding max/min, or extracting data from nested structures.
- Supports multiple indices/keys to return tuples for multi-level comparisons.