Last modified: Oct 31, 2024 By Alexander Williams

Python Sort a List of Tuples by One Element

Sorting a list of tuples by a specific element is a common task in Python.

This article explains methods to sort tuples by one element using sorted() with examples.

Using sorted() with a Lambda Function

The simplest way to sort a list of tuples by one element is to use sorted() with a lambda function.

Specify the index of the element you want to sort by inside the lambda function.


data = [(2, 'apple'), (1, 'banana'), (3, 'cherry')]
sorted_data = sorted(data, key=lambda x: x[0])
print(sorted_data)


[(1, 'banana'), (2, 'apple'), (3, 'cherry')]

In this example, tuples are sorted by the first element in each tuple, resulting in ascending order.

Sorting by a Different Element in the Tuple

To sort by another element, change the index in the lambda function.

This example sorts by the second element (string) in each tuple.


data = [(2, 'apple'), (1, 'banana'), (3, 'cherry')]
sorted_data = sorted(data, key=lambda x: x[1])
print(sorted_data)


[(2, 'apple'), (1, 'banana'), (3, 'cherry')]

The tuples are sorted alphabetically by the second element.

Learn more about accessing tuple elements in Accessing Elements at Index in Python Lists.

Using operator.itemgetter() for Sorting

The operator.itemgetter() function can also be used for sorting, providing a cleaner approach.

This method is efficient for sorting large lists by specific tuple elements.


from operator import itemgetter

data = [(2, 'apple'), (1, 'banana'), (3, 'cherry')]
sorted_data = sorted(data, key=itemgetter(0))
print(sorted_data)


[(1, 'banana'), (2, 'apple'), (3, 'cherry')]

In this example, itemgetter(0) sorts by the first element.

For more on sorting lists, see Python Sort List of Tuples: A Guide.

Sorting in Descending Order

To sort in descending order, set reverse=True in the sorted() function.


data = [(2, 'apple'), (1, 'banana'), (3, 'cherry')]
sorted_data = sorted(data, key=lambda x: x[0], reverse=True)
print(sorted_data)


[(3, 'cherry'), (2, 'apple'), (1, 'banana')]

In this example, tuples are sorted by the first element in descending order.

Using sort() to Sort a List of Tuples in Place

The sort() method sorts lists in place, modifying the original list without creating a new one.

Use key with a lambda to specify the element for sorting.


data = [(2, 'apple'), (1, 'banana'), (3, 'cherry')]
data.sort(key=lambda x: x[0])
print(data)


[(1, 'banana'), (2, 'apple'), (3, 'cherry')]

The original list data is now sorted by the first element.

To explore more about modifying lists in Python, see Adding a List to Another List in Python.

Conclusion

Sorting lists of tuples by specific elements is straightforward in Python using sorted() and sort().

Depending on your needs, you can sort in ascending, descending, or by different tuple elements.