summaryrefslogtreecommitdiffstats
path: root/Doc/library/collections.rst
diff options
context:
space:
mode:
authorRaymond Hettinger <python@rcn.com>2009-11-10 18:21:06 (GMT)
committerRaymond Hettinger <python@rcn.com>2009-11-10 18:21:06 (GMT)
commitc529c2f4dcf5bcf76d20a4319d5be57704a14041 (patch)
tree05b46b45e5219cf4380f50e134d5f56714a5b3c8 /Doc/library/collections.rst
parent1e9d54c15af1087f6af4beeb37cb2488c8a66270 (diff)
downloadcpython-c529c2f4dcf5bcf76d20a4319d5be57704a14041.zip
cpython-c529c2f4dcf5bcf76d20a4319d5be57704a14041.tar.gz
cpython-c529c2f4dcf5bcf76d20a4319d5be57704a14041.tar.bz2
Show example of how to make a sorted dictionary
Diffstat (limited to 'Doc/library/collections.rst')
-rw-r--r--Doc/library/collections.rst22
1 files changed, 22 insertions, 0 deletions
diff --git a/Doc/library/collections.rst b/Doc/library/collections.rst
index cd38956..7770b89 100644
--- a/Doc/library/collections.rst
+++ b/Doc/library/collections.rst
@@ -862,6 +862,28 @@ 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.
+Since an ordered dictionary remembers its insertion order, it can be used
+in conjuction with sorting to make a sorted dictionary::
+
+ >>> # regular unsorted dictionary
+ >>> d = {'banana': 3, 'apple':4, 'pear': 1, 'orange': 2}
+
+ >>> # dictionary sorted by key
+ >>> OrderedDict(sorted(d.items(), key=lambda t: t[0]))
+ OrderedDict([('apple', 4), ('banana', 3), ('orange', 2), ('pear', 1)])
+
+ >>> # dictionary sorted by value
+ >>> OrderedDict(sorted(d.items(), key=lambda t: t[1]))
+ OrderedDict([('pear', 1), ('orange', 2), ('banana', 3), ('apple', 4)])
+
+ >>> # dictionary sorted by length of the key string
+ >>> OrderedDict(sorted(d.items(), key=lambda t: len(t[0])))
+ OrderedDict([('pear', 1), ('apple', 4), ('orange', 2), ('banana', 3)])
+
+The new sorted dictionaries maintain their sort order when entries
+are deleted. But when new keys are added, the keys are appended
+to the end and the sort is not maintained.
+
:class:`UserDict` objects
-------------------------