使用pickle.dumps来散列可变对象

max*_*max 0 python hash python-3.x

我理解为什么将可变对象放在字典中是危险的.但是,将所有列表/集转换为元组/ frozensets是昂贵的; 对于许多类型,根本没有容易获得的不可变版本.因此,有时可能需要直接对可变对象进行哈希处理,并采取适当的预防措施以确保永远不会修改相关对象.

在我开始为可变对象实现非常复杂的自定义散列函数之前,我想检查使用pickle.dumps散列函数是否有任何缺点- 无论是在性能还是碰撞方面还是其他任何方面.

gps*_*gps 6

由于类似的原因,来自pickle的输出不能保证是规范的,因为dict和设置顺序是非确定性的.不要使用pickle或pprint或repr进行散列.