thebjorn <[EMAIL PROTECTED]> wrote:

> I'm not sure which Python is default for Ubuntu 6.06, but assuming you
> can access a recent one (2.4), the list.sort() function takes a key
> argument (that seems to be rather sparsely documented in the tutorial
> and the docstring...). E.g.:
> 
>>>> lst = [(1,2,4),(3,2,1),(2,2,2),(2,1,4),(2,4,1)]
>>>> lst.sort(key=lambda (a,b,c):(c,b))
>>>> lst
> [(3, 2, 1), (2, 4, 1), (2, 2, 2), (2, 1, 4), (1, 2, 4)]
>>>>

It may be simpler just to use the key argument multiple times (not 
forgetting to specify the keys in reverse order, i.e. the most significant 
comes last). So with this example, sorting by column 2 then column 1 and 
ignoring column 0 can be done by:

>>> from operator import itemgetter
>>> lst = [(1,2,4),(3,2,1),(2,2,2),(2,1,4),(2,4,1)]
>>> lst.sort(key=itemgetter(1))
>>> lst.sort(key=itemgetter(2))
>>> lst
[(3, 2, 1), (2, 4, 1), (2, 2, 2), (2, 1, 4), (1, 2, 4)]


or even:

>>> from operator import itemgetter
>>> lst = [(1,2,4),(3,2,1),(2,2,2),(2,1,4),(2,4,1)]
>>> for keycolumn in reversed([2,1]):
        lst.sort(key=itemgetter(keycolumn))

        
>>> lst
[(3, 2, 1), (2, 4, 1), (2, 2, 2), (2, 1, 4), (1, 2, 4)]

The important point here is to remember that the sort is stable (so you can 
do multiple sorts without disrupting earlier results).
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to