General Hash Functions In Python

Arash Partow partow at gmail.com
Mon Jul 17 03:52:14 EDT 2006


Hi Paul,

For different data types different hash functions work
better/worse aka fewer or more collisions.

I believe the more choice people have and also the more
ways people see how a particular thing can be done, then
the easier it will be for them to come up with their own
specific efficient solutions.

That said, I believe at least one (most likely more) of
the hash functions in the group above will most always work
better (ala less collisions) than the standard default hash
available in the built-in dict for any random set of strings.

Please feel free to prove me wrong :)




Arash Partow
________________________________________________________
Be one who knows what they don't know,
Instead of being one who knows not what they don't know,
Thinking they know everything about all things.
http://www.partow.net


Paul Rubin wrote:
> "Arash Partow" <partow at gmail.com> writes:
> > I've ported various hash functions to python if anyone is interested:
>
> Are these useful for any particular interoperability purposes?
> Otherwise I'd say just one such hash is plenty, or maybe don't even
> bother, since Python's built-in dicts are sufficient for most
> applications that call for hashing, and the cryptographic hashes are
> available for when you really care about uniformity of the hash
> output.
>
> >     for i in range(len(key)):
> >       hash = hash * a + ord(key[i])
> >       a = a * b
>
> As a stylistic issue, I'd write this:
>
>   for c in key:
>      hash = hash * a + ord(c)
>      a *= b
> 
> and similarly for the other similar loops.




More information about the Python-list mailing list