best way to determine sequence ordering?

Kay Schluehr kay.schluehr at gmx.net
Sun Apr 30 03:38:24 EDT 2006


> * 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.




More information about the Python-list mailing list