Web Hopeful - 1 year ago 46

Python Question

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:

`[`

[John,2],

[Jim,9],

[Jason,1]

]

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

`[`

[Jason,1],

[John,2],

[Jim,9],

]

What would be the best approach to do this?

Edit:

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])`

Answer Source

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
sorted(li,key=itemgetter(1))
Out[33]: [['Jason', 1], ['John', 2], ['Jim', 9]]
```