[Python-Dev] Python 3.6 dict becomes compact and gets a private version; and keywords become ordered (original) (raw)

Elvis Pranskevichus elprans at gmail.com
Fri Sep 9 13:08:03 EDT 2016


On Friday, September 9, 2016 4:52:21 PM EDT Brett Cannon wrote:

On Fri, 9 Sep 2016 at 01:58 Antoine Pitrou <solipsis at pitrou.net> wrote: > On Thu, 8 Sep 2016 14:20:53 -0700 > > Victor Stinner <victor.stinner at gmail.com> wrote: > > 2016-09-08 13:36 GMT-07:00 Guido van Rossum <guido at 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 definitionorder 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.

Are there any downsides to explicitly specifying that all dicts are ordered?
People will inevitably start relying on this behaviour, and this will essentially become the de-facto spec, so alternative Python implementations will have to follow suit anyway.

                                Elvis


More information about the Python-Dev mailing list