我明白为什么将可变对象放入字典是危险的。但是,将所有列表/集合转换为元组/冻结集是昂贵的;对于许多类型,根本没有容易获得的不可变版本。因此,有时可能值得直接散列可变对象,并采取适当的预防措施以确保相关对象永远不会被修改。
在我开始为可变对象实现非常复杂的自定义散列函数之前,我想检查一下使用pickle.dumps
散列函数是否有任何缺点——无论是在性能、冲突还是其他方面。
我明白为什么将可变对象放入字典是危险的。但是,将所有列表/集合转换为元组/冻结集是昂贵的;对于许多类型,根本没有容易获得的不可变版本。因此,有时可能值得直接散列可变对象,并采取适当的预防措施以确保相关对象永远不会被修改。
在我开始为可变对象实现非常复杂的自定义散列函数之前,我想检查一下使用pickle.dumps
散列函数是否有任何缺点——无论是在性能、冲突还是其他方面。