使用可变对象作为字典的键是错误的,因为一旦更改数据,它的哈希就应该改变,但是插入时使用的值将保留。
在我的测试中,Python 3.2.2的numpy引发TypeError:
TypeError: unhashable type: 'matrix'
但是在Python
2.7上,它仍然允许散列,但是当您更改数据时,散列值永远不会改变,因此,它作为字典键非常无用,因为
matrix添加到字典中的具有相同散列的许多对象都会降低散列表的质量,因此将插入
O(n^2)而不是
O(1)。
也许他们没有删除哈希值以避免破坏Python 2.x上的某些API,但不要依赖它!



