为什么copy在Python中不能与dictionary一起工作?

2024-04-20 03:30:23 发布

您现在位置:Python中文网/ 问答频道 /正文

copy.copy(tracker.items())

在这个代码中,跟踪器.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

为什么会发生这种情况,如何解决?你知道吗


Tags: 代码消息字典usrlocal报告错误items
1条回答
网友
1楼 · 发布于 2024-04-20 03:30:23

tracker.items()不是字典,它是tracker中键/值对的dict视图。tracker是一本字典。copy.copy(tracker)将很好地工作,如果您只想存储键/值对的视图,则可以随时调用.items()来处理结果。你知道吗

所看到的错误是因为copy.copy在类型没有定义复制方法(dict视图没有)时会返回到pickling和unpickling,但是复制可复制的东西(The dict)实际上非常有效(根本不需要pickling),所以您根本不需要尝试复制视图本身:

copy.copy(tracker).items()

或者,由于dict有一个.copy()方法,您可以避免模块导入,只需执行以下操作:

tracker.copy().items()

相关问题 更多 >