在Python中设置字典相等

2024-04-25 18:14:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我是编程新手,所以希望答案会很简单。我试图将一个字典设置为另一个字典,但每当第二个字典更改值时,第一个字典也会更改值。(没有告诉我)例如

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的值直到循环结束? 谢谢


Tags: and答案infor字典is编程range
1条回答
网友
1楼 · 发布于 2024-04-25 18:14:02

这是因为您只是在创建对同一对象的引用。尝试改用^{}dict.copy()

from copy import deepcopy

dictB = deepcopy(dictA)

或:

dictB = dictA.copy()

演示

a = {'a': 1, 'b': 2}

b = a

>>> print id(a)
2118820
>>> print id(b)     #same id
2118820

from copy import deepcopy

b = deepcopy(a)

print id(a)
2118820
print id(b)
1787364     #different id

演示2

a = {'a': 1, 'b': 2}

print id(a)

b = a.copy()

print id(b)

a['a'] = 5

print a,b

关于copy()需要记住的一点是:

dict.copy() creates a new dict with a different id, but just uses the same keys and values whereas deepcopy also copies the values. -@tdelaney

相关问题 更多 >