Web  Hopeful Web Hopeful - 8 months ago 22
Python Question

How to sort multidimensional array by column?

Is there a way to use the sort() method or any other method to sort a list by column? Lets say I have the list:


And I wanted to sort it so that it would look like this:


What would be the best approach to do this?


Right now I am running into an index out of range error. I have a 2 dimensional array that is lets say 1000 rows b 3 columns. I want to sort it based on the third column. Is this the right code for that?

sorted_list = sorted(list_not_sorted, key=lambda x:x[2])


Yes. The sorted built-in accepts a key argument:

sorted(li,key=lambda x: x[1])
Out[31]: [['Jason', 1], ['John', 2], ['Jim', 9]]

note that sorted returns a new list. If you want to sort in-place, use the .sort method of your list (which also, conveniently, accepts a key argument).

or alternatively,

from operator import itemgetter
Out[33]: [['Jason', 1], ['John', 2], ['Jim', 9]]

Read more on the python wiki.