Home >Backend Development >Python Tutorial >How Can I Efficiently Sort a List of Lists by Multiple Attributes in Python?
Multi-Attribute Sorting in Lists
Sorting a list by a single attribute is straightforward using Python's sorted() function and the key argument. However, sorting by multiple attributes presents a challenge.
Problem Formulation:
How can we quickly sort a list of lists by multiple attributes, such as those mentioned in the original question?
Solution:
There are two efficient methods for multi-attribute sorting in lists:
Using a Lambda Function as the Key:
s = sorted(s, key = lambda x: (x[1], x[2]))
This lambda function takes each sublist x and returns a tuple containing the second and third elements, effectively specifying the sort order based on both attributes.
**Using operator.itemgetter():
import operator s = sorted(s, key = operator.itemgetter(1, 2))
operator.itemgetter() returns a function that extracts the specified elements from each sublist, enabling sorting based on multiple attributes.
In both cases, the sort order is determined by the order of the attribute indices specified in the key function or itemgetter arguments.
Additional Note:
For in-place sorting, you can use s.sort() directly with the appropriate key function:
s.sort(key = operator.itemgetter(1, 2))
The above is the detailed content of How Can I Efficiently Sort a List of Lists by Multiple Attributes in Python?. For more information, please follow other related articles on the PHP Chinese website!