我正在尝试创建一个包含现有字典的新变量,这样我就可以更改这个新字典中的内容,而不会影响旧字典.当我在下面尝试这个,我认为这是显而易见的方法,它仍然似乎编辑我的原始字典当我编辑新的..我一直在寻找这方面的信息但似乎无法找到任何东西,任何信息表示赞赏
newdictionary = olddictionary
Run Code Online (Sandbox Code Playgroud)
您正在创建引用,而不是副本.为了制作完整的副本并保持原始状态不变,您需要copy.deepcopy().所以:
from copy import deepcopy
dictionary_new = deepcopy(dictionary_old)
Run Code Online (Sandbox Code Playgroud)
只需使用a = dict(b)或a = b.copy()将制作浅拷贝并将字典中的任何列表作为彼此的引用(因此,尽管编辑其他项目不会导致问题,但在一个字典中编辑列表也会导致另一个字典中的更改).
你只是newdictionary指出了相同的参考olddictionary点.请参阅此页面(它是关于列表的,但它也适用于dicts).

.copy()改为使用(注意:这会创建一个浅表副本):
newdictionary = olddictionary.copy()
Run Code Online (Sandbox Code Playgroud)
要创建深层副本,可以使用.deepcopy()复制模块
newdictionary = copy.deepcopy(olddictionary)
Run Code Online (Sandbox Code Playgroud)