Skip to main content
 首页 » 编程设计

python之克隆的字典被新字典的更改覆盖

2025年05月04日11duanxz

我觉得这一定是以前问过的,但我一直无法找到我正在寻找的解决方案:

我有一个简单的字典a,其中包含一个键和一个列表。我想复制该词典以供将来使用,但我对 a 所做的任何更改都会影响我的副本 b。:

>>> a 
{'kn': [8, 9, 10, 11, 12]} 
>>> b = a.copy() 
>>> b 
{'kn': [8, 9, 10, 11, 12]} 
 
>>> for l in range(len(a['kn'])): 
...     a['kn'][l] = a['kn'][l] + 10 
 
>>> a 
{'kn': [18, 19, 20, 21, 22]} 
>>> b 
{'kn': [18, 19, 20, 21, 22]} 

请您参考如下方法:

那是因为你没有制作字典的深拷贝。

这应该为您指明正确的方向:https://docs.python.org/2/library/copy.html

简而言之,当您copy() 字典时,您只是将指针 复制到字典中的项目。因此,当您更改一个字典中的值时,由于两个字典中的指针相同,因此更改会立即显示在另一个字典中。

通过执行 deepcopy(),您可以将值 从一个字典复制到另一个字典。现在您有两个单独的副本。