To stir up some more fire, I would personally be fine with sets having the same ordering guarantees as dicts, *IF* it can be done without performance degradations. So far nobody has come up with a way to ensure that. "Sets weren't meant to be deterministic" sounds like a remnant of the old philosophy, where we said the same about dicts -- until they became deterministic without slowing down, and then everybody loved it.
Regarding hash(None), I think that there is something to be said for making that stable, and the arguments against it feel like rationalizations for FUD. We've survived way larger controversies. I also note that hash(()) is apparently stable. On Mon, Nov 28, 2022 at 3:16 PM Oscar Benjamin <[email protected]> wrote: > On Mon, 28 Nov 2022 at 22:56, Brett Cannon <[email protected]> wrote: > > > > On Sun, Nov 27, 2022 at 11:36 AM Yoni Lavi <[email protected]> > wrote: > >> > >> All it takes is for your program to compute a set somewhere with > affected keys, and iterate on it - and determinism is lost. > > > > That's actually by design. Sets are not meant to be deterministic > conceptually as they are essentially a bag of stuff. If you want > deterministic ordering you should convert it to a list and sort the list. > > What does "sets are not meant to be deterministic" even mean? > > Mathematically speaking sets are not meant to be ordered in any > particular way but a computational implementation has to have some > order and there is no reason to prefer non-deterministic order in > general. Actually determinism in a computational context is usually a > very valuable feature. I find it hard to see why non-determinism is > "by design". > > Also it isn't usually possible to sort a list containing None: > > In [9]: sorted([None, 1, 2]) > --------------------------------------------------------------------------- > TypeError Traceback (most recent call last) > <ipython-input-9-344383189210> in <module> > ----> 1 sorted([None, 1, 2]) > > TypeError: '<' not supported between instances of 'int' and 'NoneType' > > It would be useful to have a straight-forward way to sort a set into a > deterministic ordering but no such feature exists after the Py3K > changes (sorted used to do this in Python 2.x). > > -- > Oscar > _______________________________________________ > Python-Dev mailing list -- [email protected] > To unsubscribe send an email to [email protected] > https://mail.python.org/mailman3/lists/python-dev.python.org/ > Message archived at > https://mail.python.org/archives/list/[email protected]/message/ILP2ZKVXQIF2ONOWRJCMLNHI3LFUFBD3/ > 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 -- [email protected] To unsubscribe send an email to [email protected] https://mail.python.org/mailman3/lists/python-dev.python.org/ Message archived at https://mail.python.org/archives/list/[email protected]/message/IGVDQ73A4PTUF42AAEA4AXS45ORUP6PB/ Code of Conduct: http://python.org/psf/codeofconduct/
