How to sort a list/tuple of lists/tuples by the element at a given index?

You can use the sorted() function with the key parameter to specify a function that extracts the element at the desired index.

Here's an example of sorting a list of tuples by the second element of each tuple:

my_list = [(1, 3), (4, 2), (3, 1)]

sorted_list = sorted(my_list, key=lambda x: x[1])

print(sorted_list)  # [(3, 1), (4, 2), (1, 3)]

Watch a course Python - The Practical Guide

You can also use the itemgetter() function from the operator module as the key for sorting, it will be more efficient than lambda function

from operator import itemgetter

my_list = [(1, 3), (4, 2), (3, 1)]

sorted_list = sorted(my_list, key=itemgetter(1))

print(sorted_list)  # [(3, 1), (4, 2), (1, 3)]

Note that the above examples will sort the list in ascending order. To sort in descending order, pass reverse=True as a parameter to the sorted() function.