Python pickle : pickled objects are not equal to source objects

标签 python pickle object-comparison

我认为这是预期的行为,但我想检查并可能找出原因,因为我所做的研究是空白的

我有一个函数可以提取数据,创建自定义类的新实例,然后将其附加到列表中。该类仅包含变量。

然后我使用协议(protocol) 2 作为二进制将该列表 pickle 到一个文件中,稍后我重新运行脚本,从我的源中重新提取数据,我有一个包含我的自定义类实例的新列表,为了测试我保留了数据与源数据相同。

重新加载 pickle 文件

现在当我做一个:

print source_list == pickle_list

这总是返回 False,我不知道为什么,如果我打印列表或查看结构,它们看起来完全一样。

任何想法都会很棒,这是我需要整理的最后一点。

最佳答案

您的类可能没有定义有意义的 __eq__,因此正在比较对象标识。由于从 pickles 加载的类与生成列表中的对象不同(即使它们具有相同的数据),您得到 False

关于Python pickle : pickled objects are not equal to source objects,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9530193/

相关文章:

Python - 使用 BeautifulSoup 抓取 ESPN 表

python - 如何使用 Pandas 编写分区的 Parquet 文件

python - 如何编写大量嵌套的 'for' 循环(递归)

python - 排序 sys.path : first virtualenv, then/usr

pickle - 加载 XGBoost 模型 : ModuleNotFoundError: No module named 'sklearn.preprocessing._label'

Java对象比较: implementing a `compareTo()` method for a playing card game

python - python类型中的__flags__是做什么用的

python - 在加载旧对象时使用 python 的属性

java - Java 中对象比较的问题(上下文是 RB 树)

c# - 当相等比较器基于 OR 运算时,编写 GetHashCode() 的正确方法是什么?