python字典赋值问题---分配所有不期望的值

时间:2017-10-05 02:04:26

标签: python dictionary

我有以下代码,首先我生成了一个有三层的字典。然后我将一个元素分配给a3 [0] [0] [' boy']但是我得到了所有分配的键。如果有人知道为什么会这样,请帮助我。非常感谢你。

a1={}
a2={}
a3= {}
for p_type in ['boy','girl']:
    a1[p_type] = 0
for m in range(2):
     a2[m] = a1
for p in range(2):
    a3[p] = a2
print(a3)
a3[0][0]['boy']=100
a3

以下是结果

{0: {0: {'boy': 0, 'girl': 0}, 1: {'boy': 0, 'girl': 0}}, 1: {0: {'boy': 0, 'girl': 0}, 1: {'boy': 0, 'girl': 0}}}

Out[12]:
{0: {0: {'boy': 100, 'girl': 0}, 1: {'boy': 100, 'girl': 0}},
 1: {0: {'boy': 100, 'girl': 0}, 1: {'boy': 100, 'girl': 0}}}

1 个答案:

答案 0 :(得分:1)

变量和字典元素包含对象的引用。您使用多个引用,但它们指向相同的字典对象。

dict.copy()创建一个真实副本。