best way to determine sequence ordering?
Steven Bethard
steven.bethard at gmail.com
Sun Apr 30 11:36:18 EDT 2006
Kay Schluehr wrote:
>> * building a dict of indicies::
>>
>> positions = dict((item, i) for i, item in enumerate(L))
>>
>> if positions['A'] < positions['D']:
>> # do some stuff
>>
>> You'll only get a gain from this version if you need to do several
>> comparisons instead of just one.
>
> Hi Steven,
>
> your solution may not create the correct answer if an item occurs twice
> in the list because the later occurrence overwrites the former during
> dict creation:
>
>>>> L = ['C', 'A', 'D', 'B', 'A']
>>>> dict((item, i) for i, item in enumerate(L))
> {'A': 4, 'C': 0, 'B': 3, 'D': 2}
>
> This gives the impression that 'D' always precedes 'A' which is wrong.
Yeah, thanks for the update. I meant to include that too.
STeVe
More information about the Python-list
mailing list