0
我有以下代码,首先我生成了一个有三层的字典。然后我给a3 [0] [0] ['boy']分配一个元素,但是我分配了所有的键。如果有人知道这是为什么,请帮助我。非常感谢你。Python的字典分配问题---分配所有值不是我想要的
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}}}
变量和字典元素保存对对象的引用。您使用多个引用,但它们指向相同的字典对象。阅读关于'dict.copy()'的解决方案。 –
我不确定你想要完成什么,但是如果你想按照三维数组的顺序做一些事情,那么你应该使用元组作为键。我猜你想要像'a3 [0,0,'boy'] = 100'这样的东西。请注意,括号内不需要括号。逗号是逗号,而不是括号。 – saulspatz
@Michael Butscher,是的,谢谢。 –