我觉得这一定是以前问过的,但我一直无法找到我正在寻找的解决方案:
我有一本简单的字典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]}
Run Code Online (Sandbox Code Playgroud)
那是因为你没有制作字典的深层副本。
这应该为您指明正确的方向:https ://docs.python.org/2/library/copy.html
简而言之,当您使用copy()字典时,您只是复制指向字典中项目的指针。因此,当您更改一个字典中的值时,由于两个字典中的指针相同,因此更改会立即显示在另一个字典中。
通过执行 a deepcopy(),您可以将值从一个字典复制到另一个字典。现在您有两个单独的副本。