Martin v. Löwis added the comment: Am 01.09.12 19:20, schrieb Stefan Krah: > Disallowing non-contiguous arrays leads to very strange situations though.
I don't find that strange. That two object compare equal doesn't imply that they both hash - only that *if* they hash, they should hash equal. In any case, this can happen already: py> x = memoryview(array.array('B',b'cba')) py> b = b'cba' py> d = {b'cba': 101} py> b in d True py> x == b True py> x in d Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: cannot hash writable memoryview object It can also happen with other types (although I had to look around a bit): py> x=set((1,2,3)) py> b=frozenset(x) py> d={b:101} py> b in d True py> x==b True py> x in d Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: unhashable type: 'set' > 1) Allow bytes hashing at all: +0.5 +0 > 2) If 1) is allowed, then also non-contiguous hashing is allowed: +1 -1 > 3) Allow multi-dimensional hashing: +-0 -1 ---------- _______________________________________ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue15814> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com