Dictionaries with tuples or tuples of tuples

Dave Angel davea at davea.name
Tue Feb 19 04:14:05 CET 2013


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.

-- 
DaveA



More information about the Python-list mailing list