There's another (IMHO more readable) way to do it if you can afford defining a short little "compare" function, and telling <list>.sort() to use that instead of its default:
>>> def myListCmp(lst1, lst2): ... if lst1[0] < lst2[0]: return -1 ... if lst2[0] > lst2[0]: return 1 ... return 0 ... >>> a = [[5, 2], [1, 3]] >>> a [[5, 2], [1, 3]] >>> a.sort(cmp=myListCmp) >>> a [[1, 3], [5, 2]] >>> On Dec 11, 11:11 am, Peter Otten <[EMAIL PROTECTED]> wrote: > Matimus wrote: > > Tartifola wrote: > >> Hi, > >> how can I sort an array like > > >> array([[5, 2], > >> [1, 3]]) > > >> along the first column to obtain > > >> array([[1, 3], > >> [5, 2]]) > >> i.e. keeping track of the ordered couples? > > >> Thanks, > >> A > > > use a sort key: > > >>>>from operators import getitem > >>>>a = [[5,2],[1,3]] > >>>>a > > [[5, 2], [1, 3]] > >>>>a.sort(key=lambda x:getitem(x,0)) > >>>>a > > [[1, 3], [5, 2]]Is that a faked session? > > >>> from operators import getitemTraceback (most recent call last): > File "<stdin>", line 1, in <module> > ImportError: No module named operators > > >>> from operator import itemgetter > >>> a = [[5, 2], [1, 3]] > >>> a.sort(key=itemgetter(0)) > >>> a[[1, 3], [5, 2]] > > Peter -- http://mail.python.org/mailman/listinfo/python-list