sort one list using the values from another list

Ron Adam rrr at ronadam.com
Mon Feb 27 05:19:49 EST 2006


Ron Adam wrote:
> Alex Martelli wrote:
>> Ron Adam <rrr at ronadam.com> wrote:
>>    ...
>>> Considering the number time I sort keys after getting them, It's the 
>>> behavior I would prefer.  Maybe a more dependable dict.sortedkeys() 
>>> method would be nice.  ;-)
>>
>> sorted(d) is guaranteed to do exactly the same thing as sorted(d.keys())
>> AND to be faster (would be pretty weird if it weren't faster...!).
>>
>> E.g., ...:
>>
>> helen:~ alex$ python -mtimeit -s'd=dict(enumerate("tarazoplay"))'
>> 'sorted(d.keys())'
>> 100000 loops, best of 3: 6.82 usec per loop
>>
>> helen:~ alex$ python -mtimeit -s'd=dict(enumerate("tarazoplay"))'
>> 'sorted(d)'
>> 100000 loops, best of 3: 5.98 usec per loop
>>
>>
>> Alex
> 
> 
> Yes, it did decrease it.  And simplified it as well. ;)
> 
> 
> def psort11(s1, s2):
>     d = dict(zip(s2, s1))
>     assert len(d) == len(s1)
>     sorted(d)
>     s1[:] = d.values()
> 

This probably should be:

def psort11(s1, s2):
     d = dict(zip(s2,s1))
     assert len(d) == len(s1)
     s1[:] = list(d[v] for v in sorted(d))




More information about the Python-list mailing list