On Mon, Sep 12, 2016 at 9:51 AM Chris Angelico <ros...@gmail.com> wrote:
> On Tue, Sep 13, 2016 at 2:27 AM, Gregory P. Smith <g...@krypto.org> wrote: > > Disorder for this purpose need not be a random shuffle (overkill). It > just > > needs to be regularly inconsistent. A simple thing to do on top of 3.6's > new > > dict implementation would be to pick a random starting point within the > > order array rather than offset 0 to start iteration from. That small > change > > would be sufficient to guarantee that code depending on order must ask > for > > order. It could even allow us to get people ready for iteration within > the > > same process to become unstable. > > Don't forget that .items(), .keys(), and .values() are all > synchronized, so you'd probably have to pick an offset at dict > creation and run with it forever after. > Indeed. We could "cheat" and match existing 2.7 and 3.5 behavior by using the hash randomization seed to determine a "consistent within the life of a process" dict iteration order randomization without storing anything per dict. That has the added bonus/drawback (POV) of allowing people to fix a specific behavior via the existing environment variable as they already expect. But given my previous message deciding trying to implement disordered iteration by default in some cases is infeasible, it's moot. :) -gps
_______________________________________________ Python-Dev mailing list Python-Dev@python.org https://mail.python.org/mailman/listinfo/python-dev Unsubscribe: https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com