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