Sort list of tuples
Sort list of tuples in Python
Consider that you have a list of tuples. You can sort the tuples in the list like you sort a list of integers.
Based on the fact that a tuple can contain multiple elements in it, you can sort this list of tuples based on some ith element of all the tuples.
In this tutorial, you will learn how to sort a list of tuple. There are many ways to do so. We shall look into examples for the following ways.
- Use inbuilt list.sort() method.
- Use bubble sort()
You can use any sorting() algorithm. The process should be same as that of using bubble sort given in this tutorial.
Examples
1. Sort list of tuples using list.sort()
In this example, we take a list of tuples where each tuple contains the fruit name and the number of fruits we have. We shall sort these tuples based on the second element in all the tuples, i.e., the number of fruits we have of each type.
Python Program
mylist = [('apple',84), ('banana',92) , ('cherry',88) , ('mango',86), ('lichi',89)]
# Sort by second element of tuples
mylist.sort(key = lambda x: x[1]) #index 1 means second element
print(mylist)
Output
[('apple', 84), ('mango', 86), ('cherry', 88), ('lichi', 89), ('banana', 92)]
The list of tuples is ordered in the increasing order of the second element in the tuples. You may change the order from increasing to decreasing by passing True for reverse parameter of sort() method. Or you can use list.reverse() on the ascending ordered list.
In the following example, we will sort the list of tuple in the descending order, using reverse parameter.
Python Program
mylist = [('apple',84), ('banana',92) , ('cherry',88) , ('mango',86), ('lichi',89)]
# Sort by second element of tuple in descending order
mylist.sort(key = lambda x: x[1], reverse=True)
print(mylist)
Output
[('banana', 92), ('lichi', 89), ('cherry', 88), ('mango', 86), ('apple', 84)]
2. Sort list of tuples using bubble sort algorithm
We shall take the same list of tuples in the above example and sort them based on the marks as before, but using bubble sort algorithm.
Python Program
mylist = [('apple',84), ('banana',92) , ('cherry',88) , ('mango',86), ('lichi',89)]
# Sort by second element of tuple
ith = 1
list_length = len(mylist)
for i in range(0, list_length):
for j in range(0, list_length-i-1):
if (mylist[j][ith] > mylist[j + 1][ith]):
mylist[j], mylist[j + 1] = mylist[j + 1], mylist[j]
print(mylist)
Output
[('apple', 84), ('mango', 86), ('cherry', 88), ('lichi', 89), ('banana', 92)]
In the above program, ith variable defines the position in tuples, by which sorting has to be done. Let us now sort the list of tuples by the first element in the tuples.
Python Program
mylist = [('apple',84), ('banana',92) , ('cherry',88) , ('mango',86), ('lichi',89)]
# Sort by first element of tuple
ith = 0
list_length = len(mylist)
for i in range(0, list_length):
for j in range(0, list_length-i-1):
if (mylist[j][ith] > mylist[j + 1][ith]):
mylist[j], mylist[j + 1] = mylist[j + 1], mylist[j]
print(mylist)
Output
[('apple', 84), ('banana', 92), ('cherry', 88), ('lichi', 89), ('mango', 86)]
Summary
In this tutorial of Python Examples, we learned how to sort a list of tuples using built-in functions and sorting algorithms, with the help of well detailed examples.