copy.copy(tracker.items())
在此代码中,tracker.items()是一个字典,此行中的代码报告此错误消息:
File "/usr/local/Cellar/python/3.7.3/Frameworks/Python.framework/Versions/3.7/lib/python3.7/copy.py", line 96, in copy
rv = reductor(4)
TypeError: can't pickle dict_items objects
为什么会发生这种情况以及如何解决?
答案 0 :(得分:6)
tracker.items()
不是字典,而是tracker
中键/值对的字典视图。 tracker
是字典。 copy.copy(tracker)
可以正常工作,如果您只想存储键/值对的视图,则可以随时在结果上调用.items()
。
看到的错误是因为,当类型没有定义复制方法(字典视图没有定义),而是复制可复制的内容(copy.copy
时,dict
会退回到酸洗和酸洗。 )实际上非常有效(根本不需要酸洗),因此您根本不需要尝试复制视图本身:
copy.copy(tracker).items()
或者由于dict
具有.copy()
方法,因此您可以避免模块导入而只需执行以下操作:
tracker.copy().items()