我错过了什么?我有一个dicts的dicts(它是在动态中创建的):
googlers = 3
goog_dict = {}
dict_within = {'score':[], 'surprise':''}
for i in xrange(googlers):
name = "goog_%s" %i
goog_dict[name] = dict_within
现在我要添加一些数据:
^{pr2}$我希望我的输出是:
{'goog_2': {'surprise': True, 'score': [8, 7, 8]}, 'goog_1':{'surprise': True, 'score': [8, 7, 7]}, 'goog_0': {'surprise': True, 'score': [8, 6, 7]}}
但我得到的是:
{'goog_2': {'surprise': True, 'score': [[8, 7, 8], [8, 7, 7], [8, 6, 7]]}, 'goog_1':{'surprise': True, 'score': [[8, 7, 8], [8, 7, 7], [8, 6, 7]]}, 'goog_0': {'surprise': True, 'score': [[8, 7, 8], [8, 7, 7], [8, 6, 7]]}}
那么为什么列表trip
附加到所有dict,而不是只有当前name
的dict?在
试试这个:
dict中的
"score"
的值在任何地方都指向相同的列表,因此您看到了这样的效果。尝试将dict构建代码粘贴到this python code visualizer中,看看会发生什么。在编辑:
如我所料。你的每一个元素都是同一个元素。读一点关于人际关系的书,因为这可能真的很有帮助。在
将代码更改为:
现在应该没事了。在
同时看看这个例子。你的案子就是这样。在
^{pr2}$这是一个很常见的错误。在
相关问题 更多 >
编程相关推荐