Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- >>> class odict(dict):
- ... def __init__(self, *args, **kw):
- ... super(odict,self).__init__(*args, **kw)
- ... self.itemlist = super(odict,self).keys()
- ... def __setitem__(self, key, value):
- ... # TODO: what should happen to the order if
- ... # the key is already in the dict
- ... self.itemlist.append(key)
- ... super(odict,self).__setitem__(key, value)
- ... def __iter__(self):
- ... return iter(self.itemlist)
- ... def keys(self):
- ... return self.itemlist
- ... def values(self):
- ... return [self[key] for key in self]
- ... def itervalues(self):
- ... return (self[key] for key in self)
- ...
- >>> od = odict(a=1,b=2)
- >>> print od
- {'a': 1, 'b': 2}
- >>> od['d']=4
- >>> od['c']=3
- >>> print od # look at the `__str__` and `__repr__` methods
- {'a': 1, 'c': 3, 'b': 2, 'd': 4}
- >>> print od.keys()
- ['a', 'b', 'd', 'c']
- >>> print od.values()
- [1, 2, 4, 3]
- >>> dir(dict)
- ['__class__', '__cmp__', '__contains__', '__delattr__', '__delitem__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'clear', 'copy', 'fromkeys', 'get', 'has_key', 'items', 'iteritems', 'iterkeys', 'itervalues', 'keys', 'pop', 'popitem', 'setdefault', 'update', 'values']
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement