在一个词条中附加列表

2024-04-25 09:03:27 发布

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

我错过了什么?我有一个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?在


Tags: 数据nameintruefor动态dictsurprise
0条回答
网友
1楼 · 发布于 2024-04-25 09:03:27

试试这个:

googlers = 3
goog_dict = {}
for i in xrange(googlers):
   name = "goog_%s" %i
   goog_dict[name] = {'score':[], 'surprise':''}

dict中的"score"的值在任何地方都指向相同的列表,因此您看到了这样的效果。尝试将dict构建代码粘贴到this python code visualizer中,看看会发生什么。在

网友
2楼 · 发布于 2024-04-25 09:03:27

编辑:

如我所料。你的每一个元素都是同一个元素。读一点关于人际关系的书,因为这可能真的很有帮助。在

将代码更改为:

goog_dict = {}
googlers = 3
for i in xrange(googlers):
   name = "goog_%s" %i
   dict_within = {'score':[], 'surprise':''}
   goog_dict[name] = dict_within 

现在应该没事了。在

同时看看这个例子。你的案子就是这样。在

^{pr2}$

这是一个很常见的错误。在

相关问题 更多 >