I have an array like this:
[['G', 10], ['A', 22], ['S', 1], ['P', 14], ['V', 13], ['T', 7], ['C', 0], ['I', 219]]
I’d like to sort it based on the 2nd element in descending order.
An ideal output would be:
[['I', 219], ['A', 22], ['P', 14], ... ]
Answers:
Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.
Method 1
list.sort, sorted accept optional key parameter. key function is used to generate comparison key.
>>> sorted(lst, key=lambda x: x[1], reverse=True) [['I', 219], ['A', 22], ['P', 14], ['V', 13], ['G', 10], ...] >>> sorted(lst, key=lambda x: -x[1]) [['I', 219], ['A', 22], ['P', 14], ['V', 13], ['G', 10], ...] >>> import operator >>> sorted(lst, key=operator.itemgetter(1), reverse=True) [['I', 219], ['A', 22], ['P', 14], ['V', 13], ['G', 10], ...]
Method 2
Use itemgetter
from operator import itemgetter a = [[1, 3, 5], [2, 511, 7], [17, 233, 1]] a = sorted(a, key=itemgetter(1))
Output : [[1, 3, 5], [17, 233, 1], [2, 511, 7]]
itemgetter can also be used to sort by multiple subarrays.
Method 3
x= [[8, 9, 7],
[1, 2, 3],
[5, 4, 3],
[4, 5, 6]]
x.sort(cmp=lambda x,y: cmp(x[0],y[0]))
print x
Method 4
Do this:
Sort the multi-dimensional array in descending order on the basis of 2nd column:
list_name.sort(key=lambda x:x[1],reverse=True)
All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0