我有一本字典。字典键是整数,值是对象列表。你知道吗
我希望能够以这样一种方式复制字典,即引用完全相同的对象,但不同的列表。你知道吗
当我使用普通拷贝时口述副本()或复制。复制(dict)--我对复制词典中的列表所做的任何更改也会更改原始词典的列表。你知道吗
但是,当我使用复制.deepcopy(dict),它一直在做新的对象,因此我不能,例如,当我从复制的字典列表中删除特定对象时,使用原始字典的列表作为“待办事项”,或者对复制的字典列表进行任何其他需要与原始对象进行比较的更改。你知道吗
关于“copy”模块(https://docs.python.org/2/library/copy.html)的文档似乎没有提到任何中间选项,也没有提到调整深度的方法。你知道吗
这样的选择、功能或什么都不存在吗?如果不是,我只是从错误的角度思考问题吗?例如,我设想,如果我遍历字典并以这种方式手动“复制”内容,我可能能够实现所需的行为(但这似乎有点冗长!)。你知道吗
您需要创建
list
的副本(这是您的dict
的值)。即使没有copy.copy()
,您也可以这样做。你知道吗将创建具有相同内容的
copy
的old_list
,并将其存储为new_list
。你知道吗因此,创建新dict的表达式应该是:
其中
my_dict
是您的原始词典您只需实现自己版本的“medium”-copy:
Python 3版本:
您可以创建实现
__deepcopy__
方法的dict
子类作为浅拷贝,并在您希望deepcopy停止的级别使用该子类(而不是本机dict
)。你知道吗相关问题 更多 >
编程相关推荐