Peter Otten wrote: > [EMAIL PROTECTED] wrote: > > > Duncan Booth wrote: > >> e.g. it is stable when you reverse the order: > >> > >> >>> lst = [[4,1],[4,2],[9,3],[5,4],[2,5]] > >> >>> list(reversed([ x[-1] for x in sorted([ (x[0],x) for x in lst ]) ])) > >> [[9, 3], [5, 4], [4, 2], [4, 1], [2, 5]] > >> >>> l1 = list(lst) > >> >>> l1.sort(key=operator.itemgetter(0), reverse=True) > >> >>> l1 > >> [[9, 3], [5, 4], [4, 1], [4, 2], [2, 5]] > >> > > Just curious, which one is supposed to be the right answer ? and why > > the second one is preferable over the first one(if both is right, > > assume we only care about x[0]). > > > > Of course, there is no reason to DIY when the built-in can do the job. > > "Stability" means items with the same key preserve their relative position. > In the original list of the example [4, 1] and [4, 2] both have the same > key. Therefore [4, 1] should stay before [4, 2], so the second is the > "right" answer. > > The practical advantage is that if e. g. you sort items first by color and > then by size, items of the same size will appear sorted by color. In > particular, sorting a list by the same key a second time does not change > the list. > Ah, thanks. That clear things up.
-- http://mail.python.org/mailman/listinfo/python-list