sort() can be used to perform this variation of sort by passing a function as a key that performs the sorting according to the desired inner list index. This can also be applied to perform this particular task. The advantage that it holds is that it does not modify the original list.
There will be three distinct ways to sort the nested lists. The first is to use Bubble Sort, the second is to use the sort() method, and the third is to use the sorted() method.
Python List sort() - Sorts Ascending or Descending List. The list. sort() method sorts the elements of a list in ascending or descending order using the default < comparisons operator between items. Use the key parameter to pass the function name to be used for comparison instead of the default < operator.
Python does not guarantee that the sort() function will work if a list contains items of different data types. As long as the items can be compared using the < comparison operator, an attempt will be made to sort the list. Otherwise, an error or exception may be generated.
This is a job for itemgetter
>>> from operator import itemgetter
>>> L=[[0, 1, 'f'], [4, 2, 't'], [9, 4, 'afsd']]
>>> sorted(L, key=itemgetter(2))
[[9, 4, 'afsd'], [0, 1, 'f'], [4, 2, 't']]
It is also possible to use a lambda function here, however the lambda function is slower in this simple case
in place
>>> l = [[0, 1, 'f'], [4, 2, 't'], [9, 4, 'afsd']]
>>> l.sort(key=lambda x: x[2])
not in place using sorted:
>>> sorted(l, key=lambda x: x[2])
Itemgetter lets you to sort by multiple criteria / columns:
sorted_list = sorted(list_to_sort, key=itemgetter(2,0,1))
multiple criteria can also be implemented through lambda function
sorted_list = sorted(list_to_sort, key=lambda x: (x[1], x[0]))
array.sort(key = lambda x:x[1])
You can easily sort using this snippet, where 1 is the index of the element.
Like this:
import operator
l = [...]
sorted_list = sorted(l, key=operator.itemgetter(desired_item_index))
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With