[Tutor] Sorting a list of lists aka nested lists

jfouhy@paradise.net.nz jfouhy at paradise.net.nz
Mon Aug 15 01:18:26 CEST 2005


Quoting Alan G <alan.gauld at freenet.co.uk>:

> > Quant.append( [ db_ticker, stock_close, MTD, 0, QTD, 0, YTD, 0, 
> > 0, 0 ] )
> > After Quant is created, I want to sort it by MTD. If I use a simple 
> > Quant.sort(), I assume its going to sort by 'db_ticker' which is not 
> > what I want.
> you need to write your own comparison function.
> Basically it will take two of your lists and return -1,0 or 1.
> 
> Or you can use Python's own logic to help
> 
> def cmplists(lst1,lst2):
>  return cmp(lst1[2],lst2[2])
> 
> Now you can sort Quant by passing your function into sort...

Note that in Python2.4+, you can use key= instead:

def sortKey(lst):
 return lst[2]
Quant.sort(key=sortKey)

This is more effient than specifying a different comparison function, because
the key function is only called once for each element.

-- 
John.


More information about the Tutor mailing list