Re: sort problem

2005-10-21 Thread Michele Petrazzo
Kent Johnson wrote:
 or learn about decorate-sort-undecorate:
 
 lst = [ ...whatever ] lst = [ x[3], i, x for i, x in enumerate(lst) ]
 
I think that here the code must be changed (for the future):
lst = [ (x[3], i, x) for i, x in enumerate(lst) ]

 lst.sort() lst = [ x for _, _, x in lst ]


Wow, this work with my py 2.3!

 
 Kent
 

Thanks,
Michele
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: sort problem

2005-10-21 Thread Alex Martelli
Michele Petrazzo [EMAIL PROTECTED] wrote:

 Lasse Vågsæther Karlsen wrote:
  How about:
  
  list.sort(key=lambda x: x[3])
  
  Does that work?
 
 Yes, on my linux-test-box it work, but I my developer pc I don't have
 the 2.4 yet. I think that this is a good reason for update :)

Updating is a good idea, and will let you get even faster by avoiding
the lambda:

import operator

thelist.sort(key=operator.itemgetter(3))

However, until you can upgrade you might be happy enough with a direct
implementation of the decorate-sort-undecorate (DSU) idiom which they
new key= named argument to sort implements.  To wit:

aux = [ (x[3], x) for x in thelist ]
aux.sort()
thelist[:] = [ x[-1] for x in aux ]

Note that the decoration can include as many columns as you want,
transformations obtained by calling int(...) or str(...) on some of the
columns, and so on.  This applies to key= in 2.4 just as well as to
the (slightly slower) direct implementation in 2.3 and earlier.


Alex
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: sort problem

2005-10-20 Thread Lasse Vågsæther Karlsen
How about:

list.sort(key=lambda x: x[3])

Does that work?

-- 
http://mail.python.org/mailman/listinfo/python-list


Re: sort problem

2005-10-20 Thread Michele Petrazzo
Lasse Vågsæther Karlsen wrote:
 How about:
 
 list.sort(key=lambda x: x[3])
 
 Does that work?
 

Yes, on my linux-test-box it work, but I my developer pc I don't have
the 2.4 yet. I think that this is a good reason for update :)

Thanks,
Michele
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: sort problem

2005-10-20 Thread Kent Johnson
Michele Petrazzo wrote:
 Lasse Vågsæther Karlsen wrote:
 
 How about:

 list.sort(key=lambda x: x[3])

Better to use key=operator.itemgetter(3)

 Yes, on my linux-test-box it work, but I my developer pc I don't have
 the 2.4 yet. I think that this is a good reason for update :)

or learn about decorate-sort-undecorate:

lst = [ ...whatever ]
lst = [ x[3], i, x for i, x in enumerate(lst) ]
lst.sort()
lst = [ x for _, _, x in lst ]

Kent

 
 Thanks,
 Michele
-- 
http://mail.python.org/mailman/listinfo/python-list