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 -- http://mail.python.org/mailman/listinfo/python-list