[EMAIL PROTECTED] wrote:
John Machin:
Consider this:>>> hash(123) == hash(123.0) == hash(123L)
True
Right... Can you explain me why Python designers have chosen to build
a hash() like that?
Because that's the kind of hash that dicts expect. If two objects are equal
(i.e. (x==y) is True), they need to have their hash values equal as well. In
order to do a lookup into a dict, it will hash the key and search the table for
a that hash value. If there are multiple keys with the same hash value, then the
dict will compare the keys by value to find a match. Since (123==123.0==123L),
they must also have the same hash value such that
{123.0: 'got it'}[123] == 'got it'
--
Robert Kern
"I have come to believe that the whole world is an enigma, a harmless enigma
that is made terrible by our own mad attempt to interpret it as though it had
an underlying truth."
-- Umberto Eco
--
http://mail.python.org/mailman/listinfo/python-list