On 18/03/2013 09:31, Chris Angelico wrote:
On Mon, Mar 18, 2013 at 6:26 PM, Frank Millman <fr...@chagford.com> wrote:
Hi all
I know that you cannot rely on the order of keys in a dictionary, and I am
not attempting to do so.
Nevertheless, the following surprised me. A program creates a dictionary
with a known set of keys. I would have thought that multiple runs of the
program would return the keys in the same sequence. As you can see, the
results appear to be totally random.
Just out of interest, I would appreciate an explanation.
Mainly, it's just something you utterly cannot depend on, so it's
allowed to vary based on the phase of the moon, the position of your
hard drive platters, or anything else it likes. The hashing is
actually randomized in recent versions of Python as a defense against
a denial of service attack by generating hash collisions; that's most
likely what you're seeing there. The dictionary object is not
deterministic to that extent. :)
Now that you mention it, I do remember reading about the recent addition
of a random element to the hashing mechanism. I am sure that is the
explanation.
Thanks, Chris
Frank
--
http://mail.python.org/mailman/listinfo/python-list