kj <no.em...@please.post> wrote: > The short version of this question is: where can I find the algorithm > used by the tuple class's __hash__ method? >
http://svn.python.org/view/python/trunk/Objects/tupleobject.c?revision=81029&view=markup static long tuplehash(PyTupleObject *v) { register long x, y; register Py_ssize_t len = Py_SIZE(v); register PyObject **p; long mult = 1000003L; x = 0x345678L; p = v->ob_item; while (--len >= 0) { y = PyObject_Hash(*p++); if (y == -1) return -1; x = (x ^ y) * mult; /* the cast might truncate len; that doesn't change hash stability */ mult += (long)(82520L + len + len); } x += 97531L; if (x == -1) x = -2; return x; } > I'm looking for a good algorithm for computing a hash key for > something like this? (Basically I'm looking for a good way to > combine hashkeys.) If you want to combine the hashes from several objects then the easiest way is just to create a tuple of the objects and hash it. -- Duncan Booth http://kupuguy.blogspot.com -- http://mail.python.org/mailman/listinfo/python-list