为什么
pickle.dumps({}.items())
在Python 3.5.2中失败,但在Python 2.7.12中没有TypeError: can't pickle dict_items objects
?
“用字典腌制]
pickle.dumps({})
在两个Python版本中都适用(并且在Python 2.7.12中提供与上述命令相同的输出)。
因为在python 2.7中.items()
返回的只是list
的tuples
,是可拾取的。
在python 3.x中,它返回dict_items
对象(在python 2中不存在),不是可拾取的(但由于它不生成列表,所以速度更快,它大致相当于python 2.xiteritems()
])。
但是您可以强制列表转换以模拟python 2.x行为:
pickle.dumps(list(d.items()))