Python:字典更改

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:'

由于某种原因,当我修改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:'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
是同一本词典的两个不同名称,但词典仍在变化。赋值未创建副本。可能重复的“否”,词典正在更改。不确定为什么@moinuddinquicadribecause
mydict
mydict2
都指向同一对象。
mydict
mydict2
是同一词典的两个不同名称。作业不会产生副本。你能详细说明/解释一下这个答案吗?为什么要使用
copy
?你能详细解释一下这个答案吗?为什么要使用
copy