Curiosidad sobre __hash__()

Pepe Aracil pepe en diselpro.com
Jue Feb 5 09:36:47 CET 2009


Opss!! ya lo entiendo.

Se ordena por hash+key

por eso el diccionario se guarda las keys
y yo que creía que era solo para implementar
el metodo keys()   ;)

Saludos.



Pepe Aracil escribió:
> Hola Chema.
>
> Imaginemos que "sota" colisiona con "caballo"
>
> entonces:
> d={}
> d["sota"] = 10
> d["caballo"] = 11
>
> ¿No se obtendria este resultado?
>
> >>>d["sota"]
> 11
> >>>d["caballo"]
> 11
>
>
> Saludos.
>
>
>
>
>
>
> Chema Cortes escribió:
>> El Thursday 05 February 2009 01:10:01 Pepe Aracil escribió:
>>
>>  
>>> Creo que con un diccionario de 65536 entradas y un hash de 32 bits,
>>> tengo 1/65536 posibilidades de tener una colisión.
>>>
>>> Son pocas posibilidades, pero yo no utilizaría un hash de 32 bits para
>>> "cosas" críticas.
>>>     
>>
>> No entiendo porqué ha de ser un problema. Los hashes se usan para 
>> ordenar los elementos con el fin de hacer búsquedas mucho más 
>> rápidas. (En realidad, determinan el orden de los items de un 
>> diccionario, por éso parece que estén desordenados). Que exista una 
>> "colisión" de dos índices en un diccionario sólo implica que se tarde 
>> un poco más en acceder al item solicitado; pero, aun con todo, puede 
>> que sea menos tiempo que si se hubiera elegido longitudes mayores de 
>> hash.
>>   
>> ------------------------------------------------------------------------
>>
>> _______________________________________________
>> Lista de correo Python-es http://listas.aditel.org/listinfo/python-es
>> FAQ: http://listas.aditel.org/faqpyes
>
> _______________________________________________
> Lista de correo Python-es http://listas.aditel.org/listinfo/python-es
> FAQ: http://listas.aditel.org/faqpyes

_______________________________________________
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