当我把一个字典分配给另一个变量时,为什么Python会更新两个字典?
当我把一个字典分配给另一个变量时,为什么Python会更新两个字典?
这个问题已经有答案了:
在使用字典时如何避免以下问题
a={'b':1} c=a c.update({'b':2}) print a # {'b':2} print c # {'b':2}
admin 更改状态以发布 2023年5月23日
通过使用字典copy
方法。像这样:
>>> a = {'b': 1} >>> c = a.copy() >>> c.update({'b': 2}) >>> print a {'b': 1} >>> print c {'b': 2} >>>
请注意,这是一个浅复制。因此,如果您的字典中存在可变对象(字典、列表等),它将复制对这些对象的引用。在这种情况下,您应该使用copy.deepcopy。以下是示例:
>>> import copy >>> a = {'b': {'g': 4}} >>> c = copy.deepcopy(a) >>> c['b'].update({'g': 15}) >>> print a {'b': {'g': 4}} >>> print c {'b': {'g': 15}}