Just curious - I thought dict keys would maintain sequence
Frank Millman
frank at chagford.com
Mon Mar 18 03:49:05 EDT 2013
On 18/03/2013 09:31, Chris Angelico wrote:
> On Mon, Mar 18, 2013 at 6:26 PM, Frank Millman <frank at 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
More information about the Python-list
mailing list