I don't know if this works the same for sets, but for dicts, this is the semantics that everyone has wanted for a long time. It makes doctests (and similar things) easier to write, reduces a source of nondeterministic failure, and removes a wart that everyone had to learn:
>>> {"foo": 1, "bar": 2, "baz": 3} {'baz': 3, 'foo': 1, 'bar': 2} >>> It's essentially the same reason as why Python specifies that expressions are (in most cases) evaluated from left to right. User don't realize that f()+g() might call g() before f(), and write code that assumes f() is called first -- the language should not disappoint them, optimization opportunities be damned. On Mon, Dec 16, 2019 at 4:23 AM Petr Viktorin <encu...@gmail.com> wrote: > On 2019-12-16 06:00, Larry Hastings wrote: > [...] > > > > These are all performance concerns. As I mentioned previously in this > > thread, in my opinion we should figure out what semantics we want for > > the object, then implement those, and only after that should we worry > > about performance. I think we should decide the question "should set > > objects maintain insertion order?" literally without any consideration > > about performance implications. > > Then this thread is missing arguments saying *why* ordered dicts are > actually better, semantics-wise. > > Originally, making dicts ordered was all about performance (or rather > memory efficiency, which falls in the same bucket.) It wasn't added > because it's better semantics-wise. > Here's one (very simplified and maybe biased) view of the history of dicts: > > * 2.x: Dicts are unordered, please don't rely on the order. > * 3.3: Dict iteration order is now randomized. We told you not to rely > on it! > * 3.6: We now use an optimized implementation of dict that saves memory! > As a side effect it makes dicts ordered, but that's an implementation > detail, please don't rely on it. > * 3.7: Oops, people are now relying on dicts being ordered. Insisting on > people not relying on it is battling windmills. Also, it's actually > useful sometimes, and alternate implementations can support it pretty > easily. Let's make it a language feature! (Later it turns out > MicroPython can't support it easily. Tough luck.) > > > By itself, "we already made dicts do it" is not a great argument in the > set *semantics* debate. > Of course, it may turn out ordering was a great idea semantics-wise as > well, but if I'm reading correctly, so far this thread has one piece of > anectodal evidence for that. > _______________________________________________ > Python-Dev mailing list -- python-dev@python.org > To unsubscribe send an email to python-dev-le...@python.org > https://mail.python.org/mailman3/lists/python-dev.python.org/ > Message archived at > https://mail.python.org/archives/list/python-dev@python.org/message/RFGF4IJ3RHW5QCQGY5P6IUWE336D4OU5/ > Code of Conduct: http://python.org/psf/codeofconduct/ > -- --Guido van Rossum (python.org/~guido) *Pronouns: he/him **(why is my pronoun here?)* <http://feministing.com/2015/02/03/how-using-they-as-a-singular-pronoun-can-change-the-world/>
_______________________________________________ Python-Dev mailing list -- python-dev@python.org To unsubscribe send an email to python-dev-le...@python.org https://mail.python.org/mailman3/lists/python-dev.python.org/ Message archived at https://mail.python.org/archives/list/python-dev@python.org/message/N7ECHMFKSQ7E56CQYGCYMVAJWEZOMVB4/ Code of Conduct: http://python.org/psf/codeofconduct/