Sorting a list of lists
jjposner at optimum.net
Fri Feb 12 19:32:49 CET 2010
On 2/12/2010 12:45 PM, 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))
Just plain "sorted(L)" will work, because Python knows how to compare
your [N, [N,N,N]]-format values:
>>> [14, [25, 105, 104]] < (14, [25, 105, 103]]
>>> [14, [25, 105, 104]] < (14, [25, 105, 105]]
> (b) sorted(L, key = lambda x:(sum(x)))
That looks good.
> 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?
You're doing fine.
> Also, I am baffled because the above fails obviously when len(L) is
> about a hundred and I can't figure out why.
Please cut-and-paste the exact error message (or other evidence of
"failure") into a message.
More information about the Python-list