[Python-Dev] Proposal: add odict to collections

David Wolever wolever at cs.toronto.edu
Sun Jun 15 06:59:51 CEST 2008


On 14-Jun-08, at 8:39 PM, Armin Ronacher wrote:
> ...
> I noticed lately that quite a few projects are implementing their own
> subclasses of `dict` that retain the order of the key/value pairs.
> ...
I'm +1 on this one too, as there are at least a couple of times in  
recent memory when I would have found this useful.

And, as far as questions about the definition of an ordered  
dictionary, is there any good reason not to simply treat the dict as  
a list?  Something like (with the obvious bits left out):

class odict(dict):
   def __init__(self, *args):  self._order = []
   def __setitem__(self, key, val):  if key not in self:  
self._order.append(key)
   def __iter__(self):  return self._order
   def items(self):  return ([item, self[item] for item in self._order])
   def sort(self):  self._order.sort()
... and so on ...

That way all the order-related functions are well defined, so it  
would be hard claim that it doesn't do the "right thing" without  
claiming that lists don't do the "right thing".


More information about the Python-Dev mailing list