Curiosidad sobre __hash__()

Francesc Alted faltet en pytables.org
Jue Feb 5 09:39:56 CET 2009


A Thursday 05 February 2009, Pepe Aracil escrigué:
> 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

No.  Como te ha dicho Chema, cuando hay colisión entonces se pasa a la 
comparación directa de claves (sólo las que generan el mismo hash).  
Así que no tienes que preocuparte de eso ya que los diccionarios 
cumplirán su función igualmente bien.

>
>
> 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



-- 
Francesc Alted
_______________________________________________
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