TypeError:无法腌制dict_items对象

时间:2019-02-12 20:14:22

标签: python-3.5

为什么

pickle.dumps({}.items())

在Python 3.5.2中使用TypeError: can't pickle dict_items objects失败,但在Python 2.7.12中失败?

使用“ pickling”字典

pickle.dumps({})

在两个Python版本中都适用(并且在python 2.7.12中提供与上述命令相同的输出)。

1 个答案:

答案 0 :(得分:1)

因为在python 2.7中,.items()仅返回list中的tuples,而可提取的。

在python 3.x中,它返回dict_items对象(在python 2中不存在),并且不能被拾取(但由于它不生成列表,所以速度更快,它与python 2大致等效)。 x iteritems())。

但是您可以强制列表转换以模拟python 2.x行为:

pickle.dumps(list(d.items()))