diff options
author | Benjamin Peterson <benjamin@python.org> | 2013-11-27 05:05:37 (GMT) |
---|---|---|
committer | Benjamin Peterson <benjamin@python.org> | 2013-11-27 05:05:37 (GMT) |
commit | 5143ce5a01438280a699c15aea1738fdfc9ceb45 (patch) | |
tree | e9002a9e807ee34b9afac062ea67b2e3d90009ab /Doc/faq | |
parent | d75803c1fcab18eca7859c212ca594137dd75e25 (diff) | |
parent | b152e177ef62cd171d5ac7bc540c7722da375894 (diff) | |
download | cpython-5143ce5a01438280a699c15aea1738fdfc9ceb45.zip cpython-5143ce5a01438280a699c15aea1738fdfc9ceb45.tar.gz cpython-5143ce5a01438280a699c15aea1738fdfc9ceb45.tar.bz2 |
merge 3.3 (#19805)
Diffstat (limited to 'Doc/faq')
-rw-r--r-- | Doc/faq/programming.rst | 30 |
1 files changed, 3 insertions, 27 deletions
diff --git a/Doc/faq/programming.rst b/Doc/faq/programming.rst index 12f1a2d..ac12da3 100644 --- a/Doc/faq/programming.rst +++ b/Doc/faq/programming.rst @@ -1193,34 +1193,10 @@ that final assignment still results in an error, because tuples are immutable. Dictionaries ============ -How can I get a dictionary to 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. +How can I get a dictionary to store and display its keys in a consistent order? +------------------------------------------------------------------------------- +Use :class:`collections.OrderedDict`. I want to do a complicated sort: can you do a Schwartzian Transform in Python? ------------------------------------------------------------------------------ |