我理解为什么将可变对象放在字典中是危险的。但是,将所有列表/集转换为元组/ frozensets是昂贵的;对于许多类型,根本没有容易获得的不可变版本。因此,有时可能需要直接对可变对象进行哈希处理,并采取适当的预防措施以确保永远不会修改相关对象。
在我开始为可变对象实现very complicated自定义哈希函数之前,我想检查使用pickle.dumps
作为哈希函数是否有任何缺点 - 无论是在性能还是冲突方面还是其他任何方面
答案 0 :(得分:6)
由于类似的原因dict并将顺序设置为非确定性,所以pickle的输出不能保证是规范的。不要使用pickle或pprint或repr进行散列。