在Python中设置相等的词典
我是编程新手,希望答案很简单。我试图将一个字典设置为另一个字典,但每当第二个字典更改值时,第一个字典也会更改值。(没有我告诉它)例如在Python中设置相等的词典,python,dictionary,Python,Dictionary,我是编程新手,希望答案很简单。我试图将一个字典设置为另一个字典,但每当第二个字典更改值时,第一个字典也会更改值。(没有我告诉它)例如 dictA = {'a':1} dictB = {} for x in range (1,5): dictB = dictA print "dictB is ", print dictB dictA['a'] += 1 print "dictA is ", print dictA print "and dic
dictA = {'a':1}
dictB = {}
for x in range (1,5):
dictB = dictA
print "dictB is ",
print dictB
dictA['a'] += 1
print "dictA is ",
print dictA
print "and dictB is ",
print dictB
返回:
dictB is {'a': 1}
dictA is {'a': 2}
and dictB is {'a': 2}
dictB is {'a': 2}
dictA is {'a': 3}
and dictB is {'a': 3}
dictB is {'a': 3}
dictA is {'a': 4}
and dictB is {'a': 4}
dictB is {'a': 4}
dictA is {'a': 5}
and dictB is {'a': 5}
有没有办法将dictB的值保持到循环结束?
谢谢这是因为您只需创建对同一对象的引用。尝试使用或
dict.copy()
:
from copy import deepcopy
dictB = deepcopy(dictA)
或:
演示
演示2
关于copy()
需要记住的一点是:
dict.copy()
创建具有不同id的新dict,但只使用
相同的键和值,而deepcopy
也会复制这些值-@特德莱尼
这是因为您只是在创建对同一对象的引用。尝试使用或
dict.copy()
:
from copy import deepcopy
dictB = deepcopy(dictA)
或:
演示
演示2
关于copy()
需要记住的一点是:
dict.copy()
创建具有不同id的新dict,但只使用
相同的键和值,而deepcopy
也会复制这些值-@特德莱尼
这是因为您只是在创建对同一对象的引用。尝试使用或
dict.copy()
:
from copy import deepcopy
dictB = deepcopy(dictA)
或:
演示
演示2
关于copy()
需要记住的一点是:
dict.copy()
创建具有不同id的新dict,但只使用
相同的键和值,而deepcopy
也会复制这些值-@特德莱尼
这是因为您只是在创建对同一对象的引用。尝试使用或
dict.copy()
:
from copy import deepcopy
dictB = deepcopy(dictA)
或:
演示
演示2
关于copy()
需要记住的一点是:
dict.copy()
创建具有不同id的新dict,但只使用
相同的键和值,而deepcopy
也会复制这些值-@特德莱尼
你能补充一下为什么
dictB=dictA.copy()
不起作用吗?dict.copy()
会复制,而不是像你说的那样“给你一个指向同一对象的指针”.copy()
适用于没有引用的简单dict。dict.copy创建具有不同id的新dict,但只使用相同的键和值。deepcopy还复制这些值。当您拥有列表和其他dict等可变类型时,Deepcopy非常有用。在这个例子中,你所需要的只是一份简单的副本;一旦解释了复制问题,我很乐意撤销我的-1。@Akavall,我希望我的编辑足够了。你能对为什么dictB=dictA.copy()
不起作用添加一些评论吗?dict.copy()
将进行复制,而不是像你说的那样“将给你指向同一对象的指针”.copy()
适用于没有引用的简单dict。dict.copy创建具有不同id的新dict,但只使用相同的键和值。deepcopy还复制这些值。当您拥有列表和其他dict等可变类型时,Deepcopy非常有用。在这个例子中,你所需要的只是一份简单的副本;一旦解释了复制问题,我很乐意撤销我的-1。@Akavall,我希望我的编辑足够了。你能对为什么dictB=dictA.copy()
不起作用添加一些评论吗?dict.copy()
将进行复制,而不是像你说的那样“将给你指向同一对象的指针”.copy()
适用于没有引用的简单dict。dict.copy创建具有不同id的新dict,但只使用相同的键和值。deepcopy还复制这些值。当您拥有列表和其他dict等可变类型时,Deepcopy非常有用。在这个例子中,你所需要的只是一份简单的副本;一旦解释了复制问题,我很乐意撤销我的-1。@Akavall,我希望我的编辑足够了。你能对为什么dictB=dictA.copy()
不起作用添加一些评论吗?dict.copy()
将进行复制,而不是像你说的那样“将给你指向同一对象的指针”.copy()
适用于没有引用的简单dict。dict.copy创建具有不同id的新dict,但只使用相同的键和值。deepcopy还复制这些值。当您拥有列表和其他dict等可变类型时,Deepcopy非常有用。在这个例子中,你所需要的只是一份简单的副本;一旦解释了副本问题,我很乐意撤销我的-1。@Akavall,我希望我的编辑足够了。虽然我不同意基于此结束此问题,但我认为此处提出的问题和答案比原始问题更好。我不同意基于此结束此问题,我认为这里提出的问题和答案比原问题中提出的更好。我不同意基于此结束本问题,我认为这里提出的问题和答案比原问题中提出的更好。我不同意基于此结束本问题,我认为这里的问题和答案比原来的问题更好。