在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,我希望我的编辑足够了。虽然我不同意基于此结束此问题,但我认为此处提出的问题和答案比原始问题更好。我不同意基于此结束此问题,我认为这里提出的问题和答案比原问题中提出的更好。我不同意基于此结束本问题,我认为这里提出的问题和答案比原问题中提出的更好。我不同意基于此结束本问题,我认为这里的问题和答案比原来的问题更好。