我想用python制作一个dict的深度副本.不幸的是,.deepcopy()方法并不适用于dict.我该怎么做?

>>> my_dict = {'a': [1, 2, 3], 'b': [4, 5, 6]}
>>> my_copy = my_dict.deepcopy()
Traceback (most recent calll last):
  File "<stdin>", line 1, in <module>
AttributeError: 'dict' object has no attribute 'deepcopy'
>>> my_copy = my_dict.copy()
>>> my_dict['a'][2] = 7
>>> my_copy['a'][2]
7

最后一行应该是3.

我希望my_dict中的修改不会影响快照my_copy.

我该怎么做?该解决方案应与Python 3.x兼容.

推荐答案

怎么样:

import copy
d = { ... }
d2 = copy.deepcopy(d)

Python 2或3:

Python 3.2 (r32:88445, Feb 20 2011, 21:30:00) [MSC v.1500 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import copy
>>> my_dict = {'a': [1, 2, 3], 'b': [4, 5, 6]}
>>> my_copy = copy.deepcopy(my_dict)
>>> my_dict['a'][2] = 7
>>> my_copy['a'][2]
3
>>>

Python相关问答推荐

情节生成的饼图文本超出页面边界

是否有方法将现有的X-Y图转换为X-Y-Y1图(以重新填充)?

使用Python OpenCV的文本检测分割

Polars -转换为PL后无法计算熵.列表

"Discord机器人中缺少所需的位置参数ctx

如何使用Jinja语法在HTML中重定向期间传递变量?

当使用keras.utils.Image_dataset_from_directory仅加载测试数据集时,结果不同

Pandas 滚动最接近的价值

删除最后一个pip安装的包

在Pandas DataFrame操作中用链接替换'方法的更有效方法

Vectorize多个头寸的止盈/止盈回溯测试pythonpandas

更改键盘按钮进入'

从groupby执行计算后创建新的子框架

删除字符串中第一次出现单词后的所有内容

OR—Tools中CP—SAT求解器的IntVar设置值

名为__main__. py的Python模块在导入时不运行'

为什么\b在这个正则表达式中不解释为反斜杠

在Google Drive中获取特定文件夹内的FolderID和文件夹名称

Pandas—堆栈多索引头,但不包括第一列

Python日志(log)模块如何在将消息发送到父日志(log)记录器之前向消息添加类实例变量