]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
Add another example to the collections module docs.
authorRaymond Hettinger <python@rcn.com>
Sat, 16 Apr 2011 00:55:36 +0000 (17:55 -0700)
committerRaymond Hettinger <python@rcn.com>
Sat, 16 Apr 2011 00:55:36 +0000 (17:55 -0700)
Doc/library/collections.rst

index 48cac2f6c9ca346cefc397bc1caa07e1340c5781..88c4f0f9eec1f61931cb6b01d37447bb1545262c 100644 (file)
@@ -818,6 +818,9 @@ semantics pass-in keyword arguments using a regular unordered dictionary.
    `Equivalent OrderedDict recipe <http://code.activestate.com/recipes/576693/>`_
    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
 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::
 
     class LastUpdatedOrderedDict(OrderedDict):
+
         'Store items in the order the keys were last added'
         def __setitem__(self, key, value):
             if key in self:
                 del self[key]
             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: