Source code for arsenal.datastructures.orderedset

"""
OrderedSet -- a set which remembers insertion order.
"""

[docs]class OrderedSet(object): """ Set which remembers insertion ordering allowed iteration while changing size and determinism. """ __slots__ = 'set', 'list' def __init__(self): self.set = set() self.list = [] def __contains__(self, item): return item in self.set def __iter__(self): return iter(self.list)
[docs] def add(self, item): if item not in self.set: self.set.add(item) self.list.append(item)
def __len__(self): return len(self.set) def __repr__(self): return 'OrderedSet(%r)' % self.list def __getitem__(self, *args): return self.list.__getitem__(*args)