comparing two lists and returning "position"

Paul Rubin http
Mon Jun 25 10:17:30 EDT 2007


Charles Sanders <C.delete_this.Sanders at BoM.GOv.AU> writes:
> from itertools import izip, count
> d = dict(izip(l2,count()))
> pos = [ d[i] for i in l1 ]
> 
> or the more memory intensive
> 
> d = dict(zip(l2,range(len(l2))))
> pos = [ d[i] for i in l1 ]

If you're itertools-phobic you could alternatively write

  d = dict((x,i) for i,x in enumerate(l2))
  pos = [ d[i] for i in l1 ]

dict access and update is supposed to take approximately constant time,
btw.  They are implemented as hash tables.



More information about the Python-list mailing list