(original) (raw)
On Fri, 9 Sep 2016 at 01:58 Antoine Pitrou <solipsis@pitrou.net> wrote:
On Thu, 8 Sep 2016 14:20:53 -0700
Victor Stinner <victor.stinner@gmail.com> wrote:
\> 2016-09-08 13:36 GMT-07:00 Guido van Rossum <guido@python.org>:
\> > IIUC there's one small thing we might still want to change somewhere
\> > after 3.6b1 but before 3.6rc1: the order is not preserved when you
\> > delete some keys and then add some other keys. Apparently PyPy has
\> > come up with a clever solution for this, and we should probably adopt
\> > it, but it's probably best not to hurry that for 3.6b1.
\>
\> Very good news: I was wrong, Raymond Hettinger confirmed that the
\> Python 3.6 dict \*already\* preserves the items order in all cases. In
\> short, Python 3.6 dict = Python 3.5 OrderedDict (in fact, OrderedDict
\> has a few more methods).
Is it an official feature of the language or an implementation detail?
It depends on the context. \*\*kwargs is now defined to be an ordered mapping and PEP 520 has been updated to drop \_\_definition\_order\_\_ and to say that cls.\_\_dict\_\_ is an ordered mapping. Otherwise we have not made dict itself ordered everywhere.
And there has been discussion to rip out the C code for OrderedDict and change the Python code to subclass dict so it only has to provide its additions to the dict API.