Curiosidad sobre __hash__()
Jesus Cea
jcea en jcea.es
Jue Feb 5 11:54:06 CET 2009
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Rodrigo Gallardo wrote:
>>> Me ha sorprendido que la función hash "solo"
>>> devuelva un entero.
>>>
>>> (1,2,3,4).__hash__()
>>> 89902565
>>>
>>> ¿No os parece que aumenta mucho las probabilidades
>>> de que se produzca una colisión no deseada en un
>>> diccionario por ej.?
>> Bueno, si la función hash está bien elegida, un entero de 32-bit da para
>> 2**31 hash diferentes, y ya tendria que ser grande el diccionario para
>> que esto sea un problema.
>
> Esto es la "paradoja del cumpleaños"
La implementación "normal" de "hash" (en Python) es la posición de
memoria del objeto. Así, dos objetos solo coinciden en "__hash__()" si
su posición de memoria es la misma. Osea, se trata del mismo objeto.
En un mundo 32 bits, con 2^32 valores para "__hash__()" es suficiente,
porque no puedes direccionar más memoria que esa.
En resumen, la implementación por defecto de "__hash__()" no es un
verdadero hash, y no está sujeto a la paradoja del cumpleaños.
- --
Jesus Cea Avion _/_/ _/_/_/ _/_/_/
jcea en jcea.es - http://www.jcea.es/ _/_/ _/_/ _/_/ _/_/ _/_/
jabber / xmpp:jcea en jabber.org _/_/ _/_/ _/_/_/_/_/
. _/_/ _/_/ _/_/ _/_/ _/_/
"Things are not so easy" _/_/ _/_/ _/_/ _/_/ _/_/ _/_/
"My name is Dump, Core Dump" _/_/_/ _/_/_/ _/_/ _/_/
"El amor es poner tu felicidad en la felicidad de otro" - Leibniz
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.8 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org
iQCVAwUBSYrFSplgi5GaxT1NAQLO1gP/etaTQPOCqtbV0eL+UEBFSspGMVt5PvTR
9/GaBwJyZb887ttMClJFtuOrqsd39fUOFLi7cOtjhiAYtXVDeUfWakP3D28fIgHV
h0G8QpZSjcDbqq/mT4cnYiaCE5HcnDL8brKWBM5fU4Tf65g4RDGaplKPQaWwQq2l
Ur9BTskvjBg=
=Y2fD
-----END PGP SIGNATURE-----
------------ próxima parte ------------
_______________________________________________
Lista de correo Python-es
http://listas.aditel.org/listinfo/python-es
FAQ: http://listas.aditel.org/faqpyes
Más información sobre la lista de distribución Python-es