python - 有什么方法可以测试两个 pkl 文件在 python 中是否具有相同的数据?

标签 python pickle

我需要在python中比较两个对象是否有相同的数据,但是有些类型不支持==。我可以用它们制作 pkl 文件然后比较字节数据吗?如果这不起作用,是否有某种方法可以比较它们的字节数据(假设我们不知道我们是否正在处理可能包含不同数据类型、列表、矩阵、数据帧等的两个元组)?根据我们是否正在查看包含矩阵、数据帧等的元组,编写具有不同情况的比较函数似乎非常困惑。

最佳答案

甚至不能保证用 == 比较相等的两个对象 pickle 相同:

>>> x = (1,)
>>> y = (x, x)
>>> z = ((1,), (1,))
>>> y == z
True
>>> pickle.dumps(y) == pickle.dumps(z)
False
>>> {-1, -2} == {-2, -1}
True
>>> pickle.dumps({-1, -2}) == pickle.dumps({-2, -1})
False

序列化对象以比较它们的序列化形式并不是一个可行的通用相等比较。如果您想定义自己的相等性概念,编写自己的相等性比较函数可能是您的最佳选择。

关于python - 有什么方法可以测试两个 pkl 文件在 python 中是否具有相同的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22266412/

相关文章:

python - 如何使用pickle从文件中获取类实例列表

Python pickle 调用 cPickle?

python - 在 Python 中,类名的自动完全限定是如何工作的? [与对象 pickle 相关]

python - 查找字典中混合类型值的重复项

python - sqlite 不自动递增

python - 在没有 freetype 的情况下在 PIL 中使用字体

python - 我是否总是需要重建 docker 才能安装新的 pip 包?

存储在 shelf 中的 Python 实例在关闭后发生变化

python - 省略 Toplevel 的父参数

python - 正则表达式匹配字符串中的奇数