On 19/06/2008, Keith Troell <[EMAIL PROTECTED]> wrote: > Let's say I have a list of lists l == [[1, 2, 3], [2, 3, 1], [3, 2, 1], [1, > 3, 2]] > > If I do a l.sort(), it sorts on the first element of each listed list: > > >>> l.sort() > >>> l > [[1, 2, 3], [1, 3, 2], [2, 3, 1], [3, 2, 1]] > > > How can I sort on the second or third elements of the listed lists?
Use the key= option in sort, together with the operator module: >>> l = [[1,2,3], [2,3,1], [3,2,1], [1,3,2]] >>> import operator >>> l.sort(key=operator.itemgetter(1)) >>> l [[1, 2, 3], [3, 2, 1], [2, 3, 1], [1, 3, 2]] >>> l.sort(key=operator.itemgetter(2)) >>> l [[3, 2, 1], [2, 3, 1], [1, 3, 2], [1, 2, 3]] >>> operator.itemgetter(i) is basically equivalent to a function defined as follows: def f(lst): return lst[i] If you have an old version of python, this may not work. As an alternative, try googling for "decorate-sort-undecorate". -- John. _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor