Python:字典更改
由于某种原因,当我修改mydict2时,它会更改mydict的内容 这是我的密码:Python:字典更改,python,python-3.x,dictionary,Python,Python 3.x,Dictionary,由于某种原因,当我修改mydict2时,它会更改mydict的内容 这是我的密码: mydict = {1:'a', 2:'b'} mydict2 = mydict mydict2[1] = 'c' print(mydict2) 如果您尝试此操作,它将输出{1:c',2:b'} 它应该输出{1:'a',2:'b'}并且当您执行打印(mydict)时,它应该输出{1:'c',2:'b'}您应该使用函数copy: from copy import copy mydict = {1:'a', 2:'
mydict = {1:'a', 2:'b'}
mydict2 = mydict
mydict2[1] = 'c'
print(mydict2)
如果您尝试此操作,它将输出{1:c',2:b'}
它应该输出
{1:'a',2:'b'}
并且当您执行打印(mydict)
时,它应该输出{1:'c',2:'b'}
您应该使用函数copy:
from copy import copy
mydict = {1:'a', 2:'b'}
mydict2 = copy(mydict)
mydict2[1] = 'c'
print(mydict2)
同一对象有两个链接。如果您想要有两个对象,您应该复制您的dict您应该使用函数copy:
from copy import copy
mydict = {1:'a', 2:'b'}
mydict2 = copy(mydict)
mydict2[1] = 'c'
print(mydict2)
同一对象有两个链接。如果您想要有两个对象,您应该复制您的dict您正在将mydic2设置为等于对象mydict。当你改变mydict2时,它会改变mydict1的内容 尝试使用copy或copy.deepcopy,如下所示:
查看此线程以获取示例:您正在将mydic2设置为等于对象mydict。当你改变mydict2时,它会改变mydict1的内容 尝试使用copy或copy.deepcopy,如下所示:
查看此线程以获取示例:
mydict
和mydict2
都是对同一对象的引用
因此,对
mydict
或mydict2
的更改将更改同一对象,因此,更改其中一个对象似乎就是更改另一个对象。mydict
和mydict2
都是对同一对象的引用
因此,对
mydict
或mydict2
的更改将更改同一对象,因此,更改其中一个对象似乎就是更改另一个对象。mydict
和mydict2
都指向内存中的同一对象。当其中一个发生变化时,另一个也会发生变化。他们引用同一本词典
仅使用赋值运算符来制作正确的副本是不够的。如果希望mydict2
指向字典的副本mydict
指向,则需要告诉Python显式创建副本:
>>> mydict = {1:'a', 2:'b'}
>>> mydict2 = mydict.copy()
>>> mydict2[1] = 'c'
>>> mydict
{1: 'a', 2: 'b'}
>>> mydict2
{1: 'c', 2: 'b'}
>>>
但是请注意,如果您有嵌套字典结构,则此方法将失败。在这种情况下需要使用。
mydict
和mydict2
都指向内存中的同一对象。当其中一个发生变化时,另一个也会发生变化。他们引用同一本词典
仅使用赋值运算符来制作正确的副本是不够的。如果希望mydict2
指向字典的副本mydict
指向,则需要告诉Python显式创建副本:
>>> mydict = {1:'a', 2:'b'}
>>> mydict2 = mydict.copy()
>>> mydict2[1] = 'c'
>>> mydict
{1: 'a', 2: 'b'}
>>> mydict2
{1: 'c', 2: 'b'}
>>>
但是请注意,如果您有嵌套字典结构,则此方法将失败。在这种情况下,您需要使用。mydict和mydict2都引用同一个词典,因此当您更改一个词典时,您也会更改另一个词典。mydict和mydict2都引用同一个词典,因此当您更改一个词典时,您也会更改另一个词典。可能重复的否,尽管@moinuddinquichadribecause
mydict
和mydict2
都指向同一个对象,mydict
和mydict2
是同一本词典的两个不同名称,但词典仍在变化。赋值未创建副本。可能重复的“否”,词典正在更改。不确定为什么@moinuddinquicadribecausemydict
和mydict2
都指向同一对象。mydict
和mydict2
是同一词典的两个不同名称。作业不会产生副本。你能详细说明/解释一下这个答案吗?为什么要使用copy
?你能详细解释一下这个答案吗?为什么要使用copy
?