# Sort a list of lists

if i have a list of lists like this one: (the one i have is obviously much larger but this is the idea):
new = [['dog',2],['cat',5],['bye',1]]
...
how can i sort it according to the numbers on the second column, i.e., new[0][1]=2....?
i.e., new.sort should become: new.sort(sthg) = [['bye',1],['dog',2],['cat',5]]

How can i access all the numbers in the second column together like it was a vector?
i.e., new[sthg][sthg] = [2,5,1]

How would you sort it alphabetically up/down?
i.e., alphabetically up: new.sort should become: new.sort(sthg) = [['bye',1],['cat',5],['dog',2]]
i.e., alphabetically down: new.sort should become: new.sort(sthg) = [['dog',2],['cat',5],['bye',1]]

Another basic question:
if i have a list L, L[:] means what?????

I am a newbie in python...

Thanks for the help,

Daniel
PythonProgramming

Last Comment
LunarNRG

8/22/2022 - Mon
Roger Baklund

THIS SOLUTION ONLY AVAILABLE TO MEMBERS.
View this solution by signing up for a free trial.
Members can start a 7-Day free trial and enjoy unlimited access to the platform.
Roger Baklund

For the reverse sorting, you could also do this:
``````new.sort(reverse=1)

# or:
new.sort(reverse=True)
``````
LunarNRG

You may also be interested in the 'sorted' and 'reversed' builtins. With the caveat that both of these return new objects, 'sorted' returns a new list and 'reversed' returns an iterator.

>>> help(sorted) # no cmp arg in 3.0
Help on built-in function sorted in module builtins:
sorted(...)
sorted(iterable, key=None, reverse=False) --> new sorted list

>>> help(reversed)
...
reversed(sequence) -> reverse iterator over values of the sequence
...

Also, as with the 'sorted' builtin, the 'cmp' argument to list.sort is not available in future versions of python starting with 3.0 I believe. You should use the 'key' keyword argument instead which requires a slightly different approach. IIRC, the 'key' argument was introduced in python2.4, so it's safe to use in current code (>=python2.4, of course). For example,

``````# sort it according to the numbers on the second column, i.e., new[0 [1]=2....?
new.sort(key=lambda x: x[1])
# ... or ...
from operator import itemgetter
new.sort(key=itemgetter(1))