为什么
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中提供与上述命令相同的输出)。
答案 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()))