1

我明白为什么将可变对象放入字典是危险的。但是,将所有列表/集合转换为元组/冻结集是昂贵的;对于许多类型,根本没有容易获得的不可变版本。因此,有时可能值得直接散列可变对象,并采取适当的预防措施以确保相关对象永远不会被修改。

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

4

1 回答 1

7

出于与 dict 和 set order 不确定的类似原因,不能保证 pickle 的输出是规范的。不要使用 pickle 或 pprint 或 repr 进行散列。

于 2012-10-05T04:13:03.000 回答