Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python字典分配问题---分配所有不需要的值_Python_Dictionary - Fatal编程技术网

python字典分配问题---分配所有不需要的值

python字典分配问题---分配所有不需要的值,python,dictionary,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

我有以下代码,首先我生成了一个有三层的字典。然后我将一个元素分配给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}}}

变量和字典元素保存对对象的引用。您使用多个引用,但它们指向同一个dictionary对象


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

变量和字典元素包含对对象的引用。您使用多个引用,但它们指向同一个dictionary对象。阅读
dict.copy()
了解解决方案。我不确定您想要完成什么,但是如果您想按照三维数组的顺序制作一些东西,那么您应该使用元组作为键。我猜你想要像
a3[0,0,'boy']=100这样的东西。请注意,括号内不需要括号。元组是由逗号组成的,而不是括号。@Michael Butscher,是的,谢谢。@MichaelButscher你能把你的评论作为答案吗?谢谢@亚历克斯做到了。