Add another example to the collections module docs.

This commit is contained in:
Raymond Hettinger 2011-04-15 17:55:36 -07:00
parent 37c0fe56b9
commit df453fbb5f
1 changed files with 20 additions and 0 deletions

View File

@ -818,6 +818,9 @@ semantics pass-in keyword arguments using a regular unordered dictionary.
`Equivalent OrderedDict recipe <http://code.activestate.com/recipes/576693/>`_ `Equivalent OrderedDict recipe <http://code.activestate.com/recipes/576693/>`_
that runs on Python 2.4 or later. that runs on Python 2.4 or later.
:class:`OrderedDict` Examples and Recipes
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Since an ordered dictionary remembers its insertion order, it can be used Since an ordered dictionary remembers its insertion order, it can be used
in conjuction with sorting to make a sorted dictionary:: in conjuction with sorting to make a sorted dictionary::
@ -846,12 +849,29 @@ If a new entry overwrites an existing entry, the
original insertion position is changed and moved to the end:: original insertion position is changed and moved to the end::
class LastUpdatedOrderedDict(OrderedDict): class LastUpdatedOrderedDict(OrderedDict):
'Store items in the order the keys were last added' 'Store items in the order the keys were last added'
def __setitem__(self, key, value): def __setitem__(self, key, value):
if key in self: if key in self:
del self[key] del self[key]
OrderedDict.__setitem__(self, key, value) OrderedDict.__setitem__(self, key, value)
An ordered dictionary can combined with the :class:`Counter` class
so that the counter remembers the order elements are first encountered::
class OrderedCounter(Counter, OrderedDict):
'Counter that remembers the order elements are first encountered'
def __init__(self, iterable=None, **kwds):
OrderedDict.__init__(self)
Counter.__init__(self, iterable, **kwds)
def __repr__(self):
return '%s(%r)' % (self.__class__.__name__, OrderedDict(self))
def __reduce__(self):
return self.__class__, (OrderedDict(self),)
.. _abstract-base-classes: .. _abstract-base-classes: