[Python-checkins] cpython (3.3): recommend OrderedDict for this FAQ (closes #19805)

benjamin.peterson python-checkins at python.org
Wed Nov 27 06:06:27 CET 2013


http://hg.python.org/cpython/rev/22e514e41fac
changeset:   87607:22e514e41fac
branch:      3.3
parent:      87605:bab7dc2ffc16
user:        Benjamin Peterson <benjamin at python.org>
date:        Tue Nov 26 23:05:25 2013 -0600
summary:
  recommend OrderedDict for this FAQ (closes #19805)

files:
  Doc/faq/programming.rst |  30 ++--------------------------
  1 files changed, 3 insertions(+), 27 deletions(-)


diff --git a/Doc/faq/programming.rst b/Doc/faq/programming.rst
--- a/Doc/faq/programming.rst
+++ b/Doc/faq/programming.rst
@@ -1193,34 +1193,10 @@
 Dictionaries
 ============
 
-How can I get a dictionary to display its keys in a consistent order?
----------------------------------------------------------------------
+How can I get a dictionary to store and display its keys in a consistent order?
+-------------------------------------------------------------------------------
 
-You can't.  Dictionaries store their keys in an unpredictable order, so the
-display order of a dictionary's elements will be similarly unpredictable.
-
-This can be frustrating if you want to save a printable version to a file, make
-some changes and then compare it with some other printed dictionary.  In this
-case, use the ``pprint`` module to pretty-print the dictionary; the items will
-be presented in order sorted by the key.
-
-A more complicated solution is to subclass ``dict`` to create a
-``SortedDict`` class that prints itself in a predictable order.  Here's one
-simpleminded implementation of such a class::
-
-   class SortedDict(dict):
-       def __repr__(self):
-           keys = sorted(self.keys())
-           result = ("{!r}: {!r}".format(k, self[k]) for k in keys)
-           return "{{{}}}".format(", ".join(result))
-
-       __str__ = __repr__
-
-This will work for many common situations you might encounter, though it's far
-from a perfect solution. The largest flaw is that if some values in the
-dictionary are also dictionaries, their values won't be presented in any
-particular order.
-
+Use :class:`collections.OrderedDict`.
 
 I want to do a complicated sort: can you do a Schwartzian Transform in Python?
 ------------------------------------------------------------------------------

-- 
Repository URL: http://hg.python.org/cpython


More information about the Python-checkins mailing list