class OrderedSet(collections.MutableSet):

    def __init__(self, values=()):
        self._od = collections.OrderedDict().fromkeys(values)

def __len__(self):
    return len(self._od)

def __iter__(self):
    return iter(self._od)

def __contains__(self, value):
    pass
Индексируемый слабоупорядоченный набор в Python