> 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] -- http://mail.python.org/mailman/listinfo/python-list