From: Miss Islington (bot) <31488909+miss-islington@users.noreply.github.com> Date: Mon, 4 Jun 2018 22:25:12 +0000 (-0700) Subject: bpo-33609: Document dict insertion order guarantee as of 3.7 (GH-7093) X-Git-Tag: v3.7.0rc1~73 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=8585ec9b761947aae6be5f653a5b9ddef2801d58;p=python bpo-33609: Document dict insertion order guarantee as of 3.7 (GH-7093) (cherry picked from commit f822549653d8d09bffff5b7dcddfdf12679a787c) Co-authored-by: INADA Naoki --- diff --git a/Doc/library/stdtypes.rst b/Doc/library/stdtypes.rst index a213189a34..90864d497b 100644 --- a/Doc/library/stdtypes.rst +++ b/Doc/library/stdtypes.rst @@ -4229,6 +4229,29 @@ pairs within braces, for example: ``{'jack': 4098, 'sjoerd': 4127}`` or ``{4098: value)`` pairs. Order comparisons ('<', '<=', '>=', '>') raise :exc:`TypeError`. + Dict preserves insertion order. Note that updating key doesn't affects the + order. On the other hand, keys added after deletion are inserted to the + last. :: + + >>> d = {"one": 1, "two": 2, "three": 3, "four": 4} + >>> d + {'one': 1, 'two': 2, 'three': 3, 'four': 4} + >>> list(d) + ['one', 'two', 'three', 'four'] + >>> list(d.values()) + [1, 2, 3, 4] + >>> d["one"] = 42 + >>> d + {'one': 42, 'two': 2, 'three': 3, 'four': 4} + >>> del d["two"] + >>> d["two"] = None + >>> d + {'one': 42, 'three': 3, 'four': 4, 'two': None} + + .. versionchanged:: 3.7 + Dict order is guaranteed to be insertion order. This behavior was + implementation detail of CPython from 3.6. + .. seealso:: :class:`types.MappingProxyType` can be used to create a read-only view of a :class:`dict`.