Dictionaries with tuples or tuples of tuples
Mitya Sirenef
msirenef at lightbird.net
Mon Feb 18 22:56:40 EST 2013
On 02/18/2013 10:14 PM, Dave Angel wrote:
> On 02/18/2013 09:54 PM, Mitya Sirenef wrote:
>> On 02/18/2013 09:17 PM, Jon Reyes wrote:
>>> Thanks Dave and Mitya for enlightening me about dictionaries. I'm
>>> still confused about this though:
>> >
>> > " so that if two
>> > key objects are equal, they stay equal, and if they differ, they stay
>> > different. "
>> >
>> > What does this mean? I won't be comparing key objects with one
>> another. Also, when I had two keys with the same value the value of the
>> other key disappeared so I assume in runtime if there are multiple keys
>> of the same value only the last one will appear.
>>
>> You won't be, but dict will.
>>
>> Dict is by definition a mapping where a value is assigned to a unique
>> key. If you have two keys and two values, and then change one key to
>> be equal to the second key, that's not kosher, because which value it's
>> supposed to return when you try to get it by that key?
>>
>> So in effect, key's hash value should not change. If key is immutable,
>> you can be certain that it's hash value will not change. If it's
>> mutable, you have to make sure not to change the key in a way that'd
>> make its hash value different than it was.
>>
>> -m
>>
>
> It's a little stronger than that, since equal hashes cannot assure
> equal data. The equality of each object pair in a dict must not
> change over time, not just the hashes of the individual objects.
>
Ah, yes - that's true; if hashes were unequal and then the key is
changed to be equal to the first key, both mydict[key1] and mydict[key2]
will give you value1, but iterating over dict items will print key1,
value1; key2, value2. And that's not a good thing. -m
--
Lark's Tongue Guide to Python: http://lightbird.net/larks/
True friends stab you in the front.
Oscar Wilde
More information about the Python-list
mailing list