当我在处理另一本字典时,一本字典会更改值
One dictionary changes value while I'm working on another dictionary
我正在为字典苦苦挣扎
dic1 = {"A":"a","B":"b","C":"c"}
dic2 = dic1
dic2["D"]="d"
print(dic1)
输出:
{'A': 'a', 'B': 'b', 'C': 'c', 'D': 'd'}
有人能解释一下为什么 dic1 还附加了带有“d”值的“D”键吗?我该怎么做才能避免这个问题?我真的希望 dic1 不改变值
发生这种情况是因为您正在使用参考资料。 This guide 是对 Python 参考文献的很好解释。
要避免此问题,请尝试以下操作:
dic1 = {"A":"a","B":"b","C":"c"}
dic2 = dic1.copy()
这是 Python 个对象的基础 属性。当您天真地将一个已存在的对象分配给一个新对象时,新对象实际上指向第一个对象。
使用 dict2 = dict1
,您实际上指向同一个对象。这意味着您在 dict2
中所做的每项更改都会影响原始对象。
如果您想复制字典,请尝试 dict2 = dict(dict1)
.
我正在为字典苦苦挣扎
dic1 = {"A":"a","B":"b","C":"c"}
dic2 = dic1
dic2["D"]="d"
print(dic1)
输出:
{'A': 'a', 'B': 'b', 'C': 'c', 'D': 'd'}
有人能解释一下为什么 dic1 还附加了带有“d”值的“D”键吗?我该怎么做才能避免这个问题?我真的希望 dic1 不改变值
发生这种情况是因为您正在使用参考资料。 This guide 是对 Python 参考文献的很好解释。
要避免此问题,请尝试以下操作:
dic1 = {"A":"a","B":"b","C":"c"}
dic2 = dic1.copy()
这是 Python 个对象的基础 属性。当您天真地将一个已存在的对象分配给一个新对象时,新对象实际上指向第一个对象。
使用 dict2 = dict1
,您实际上指向同一个对象。这意味着您在 dict2
中所做的每项更改都会影响原始对象。
如果您想复制字典,请尝试 dict2 = dict(dict1)
.