[Python-Dev] Guarantee ordered dict literals in v3.7?
tds333 at mailbox.org
Tue Nov 7 03:00:06 EST 2017
I have to admit sometimes I don't understand why small things produce so much
mail traffic. :-)
If I use a mapping like dict most of the time I don't care if it is ordered.
If I need an ordering I use OrderedDict. In a library if I need a dict to be
ordered most of the time there is a parameter allowing me to do this or to
specify the used class as dict.
If this is not the case it can be fixed. In rare cases a workaround is needed.
As of now I have dict and OrderedDict, it is clear and explicit.
No need to change.
Yes it is useful for debugging to have things ordered.
Yes in other places the implicit ordering is also fine.
For pypy and CPython good and take it, be happy.
Also it is fine to teach people that dict (Mapping) is not ordered
but CPython has an implementation detail and it is ordered.
But if you want the guarantee use OrderedDict.
To be really practical even if this is guaranteed in 3.9
I cannot rely on it because of Python 2.7, 3.5, 3.6, ... compatibility.
If this versions are out of order in 10 years, even then if I want to
produce a small library running on another implementation I have to
care, because of the list of differences to the CPython implementation
or because the project is not yet up to date with the implementation (Jython).
To be save then I will still use OrderedDict guaranteeing me this
what I want.
Finally even when dict literals will be guaranteed to be ordered
it is good to teach and use OrderedDict because it is explicit.
For implementations (algorithm) I cannot foresee the
future so I cannot tell if it will be a burden or not.
Finally someone have to decide it.
As long as OrderedDict is available for me to specify it explicit
it will be fine. ;-)
On 04.11.2017 18:30, Stefan Krah wrote:
> would it be possible to guarantee that dict literals are ordered in v3.7?
> The issue is well-known and the workarounds are tedious, example:
> If the feature is guaranteed now, people can rely on it around v3.9.
> Stefan Krah
> Python-Dev mailing list
> Python-Dev at python.org
> Unsubscribe: https://mail.python.org/mailman/options/python-dev/tds333%40mailbox.org
More information about the Python-Dev