]> granicus.if.org Git - python/commitdiff
bpo-33609: Document dict insertion order guarantee as of 3.7 (GH-7093)
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>
Mon, 4 Jun 2018 22:25:12 +0000 (15:25 -0700)
committerGitHub <noreply@github.com>
Mon, 4 Jun 2018 22:25:12 +0000 (15:25 -0700)
(cherry picked from commit f822549653d8d09bffff5b7dcddfdf12679a787c)

Co-authored-by: INADA Naoki <methane@users.noreply.github.com>
Doc/library/stdtypes.rst

index a213189a34074995624ac9db1492d147ca10c479..90864d497b52eb1a6ae2b24e18a98faab5cf1538 100644 (file)
@@ -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`.