Unique Elements in a List

Nyet Ya Koshka coldtortuga at yahoo.com
Tue May 17 12:32:18 EDT 2005


> One reasonable solution might be as follows:
>
>   def unique_elts(seq):
>     elts = {}
>     for pos, elt in enumerate(seq):
>       elts.setdefault(elt, []).append(pos)
>
>     return [ (x, p[0]) for (x, p) in elts.iteritems()
>              if len(p) == 1 ]
>

Minor tweak to conserve space:

def bachelor_filter(iter_over_hashables):
   B={}
   for index, elem in enumerate(iter_over_hashables):
      if B.setdefault(elem, index) != index:
         B[elem]=None
   return [pair for pair in B.items() if pair[1] is not None]




More information about the Python-list mailing list