Message 151701 - Python tracker (original) (raw)

On Fri, Jan 20, 2012 at 7:58 AM, STINNER Victor

If the hash output depends on an argument, the result cannot be cached.

They can still be cached in a separate dict based on id, rather than string contents.

It may also be possible to cache them in the dict itself; for a string-only dict, the hash of each entry is already cached on the object, and the cache member of the entry is technically redundant. Entering a key with the alternative hash can also switch the lookup function to one that handles that possibility, just as entering a non-string key currently does.

It would require to add an optional argument to hash functions, or add a new function to some (or all?) builtin types.

For backports, the alternative hashing could be done privately within dict and set, and would not require new slots on other types.