Terry Reedy <tjre...@udel.edu> writes: >> [Hashing is] pretty much mandated because of the __hash__ protocol. > > Lib Ref 4.8. Mapping Types — dict > "A mapping object maps hashable values to arbitrary objects." > > This does not say that the mapping has to *use* the hash value ;-). > Even if it does, it could use a tree structure instead of a hash > table.
An arbitrary mapping doesn't, but reference to the hash protocol was in the context of implementation constraints for dicts themselves (my response quotes the relevant part of Chris's message). If a Python implementation tried to implement dict as a tree, instances of classes that define only __eq__ and __hash__ would not be correctly inserted in such a dict. This would be a major source of incompatibility with Python code, both in the standard library and at large. -- http://mail.python.org/mailman/listinfo/python-list