From: Raymond Hettinger Date: Sat, 16 Apr 2011 00:43:19 +0000 (-0700) Subject: Add another example to the collections module docs. X-Git-Tag: v3.2.1b1~118^2 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=7bba683d27a82856f93f72370f273025579d3a13;p=thirdparty%2FPython%2Fcpython.git Add another example to the collections module docs. --- diff --git a/Doc/library/collections.rst b/Doc/library/collections.rst index 02415f77353e..68a79f12d097 100644 --- a/Doc/library/collections.rst +++ b/Doc/library/collections.rst @@ -783,6 +783,9 @@ semantics pass-in keyword arguments using a regular unordered dictionary. `Equivalent OrderedDict recipe `_ 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:: @@ -812,11 +815,28 @@ 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),) + :class:`UserDict` objects -------------------------