copy.copy(tracker.items())
Run Code Online (Sandbox Code Playgroud)
在此代码中,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
Run Code Online (Sandbox Code Playgroud)
为什么会发生这种情况以及如何解决?
tracker.items()不是字典,而是的键/值对的字典视图tracker。tracker是一本字典。copy.copy(tracker)将会很好地工作,并且.items()如果您只想存储键/值对的视图,则可以随时调用结果。
看到的错误是因为copy.copy,当类型未定义复制方法(字典视图未定义)时,会退回去进行酸洗和酸洗,但是复制可复制的东西(dict)实际上非常有效(根本不需要酸洗),因此您根本不需要尝试复制视图本身:
copy.copy(tracker).items()
Run Code Online (Sandbox Code Playgroud)
或由于dicts有一个.copy()方法,您可以避免模块导入而只需执行以下操作:
tracker.copy().items()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
43 次 |
| 最近记录: |