Sorting a list of lists

MRAB python at mrabarnett.plus.com
Fri Feb 12 13:24:17 EST 2010


R (Chandra) Chandrasekhar wrote:
> Dear Folks,
> 
> I have lines of values like so:
> 
> 14, [25, 105, 104]
> 10, [107, 106, 162]
> 21, [26, 116, 165]
> 
> I need to sort them in two ways:
> 
> (a) By the numeric value of the first column; and
> 
> (b) by the sum of the elements of the second item in each list, which is 
> a list in itself.
> 
> At present, I have appended each line into a list L so that I for teh 
> above minimal data, I have a list of lists thus:
> 
> [[14, [25, 105, 104]], [10, [107, 106, 162]], [21, [26, 116, 165]]]
> 
> I have tried using
> 
> (a) sorted(L, key = lambda x:(x[0]))
> 
> and
> 
> (b) sorted(L, key = lambda x:(sum(x[1])))
> 
> and get the anticipated results for (a) and (b0, at least with the above 
> minimal data set.
> 
> Is this a sensible way to go about the sorting, or are there better ways 
> of doing it in Python?
> 
It's the obvious way to do it.

> Also, I am baffled because the above fails obviously when len(L) is 
> about a hundred and I can't figure out why.
> 
You'd have to post an example of that, but you could try deleting some
of the entries before sorting so see whether you can still reproduce the
problem with a smaller list.



More information about the Python-list mailing list