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