如何在for循环操作中访问列表中的每个元素?
我正在循环浏览此列表,但不明白为什么print(d)
返回seed
中的每个数字,但分配i["seed"] = d
会指定seed
的最后一个元素。如何在for循环操作中访问列表中的每个元素?
如何访问seed
中除print()
之外的其他操作的每个元素?
res = []
seed = [1, 2, 3, 4, 5, 6, 7, 8, 9]
i = {}
for d in seed:
print(d)
i["seed"] = d
res.append(i)
print(res)
谢谢!
问题是只有一个对象i
,并且每次在循环中都要替换它的值。通过最后一次迭代,我的一个实例将其值设置为您分配给它的最后一个项目。每次追加到res
时,基本上都会将指针附加到同一个对象上(所以当循环完成时,最终会有9个指针指向同一个对象)。
res = []
seed = [1, 2, 3, 4, 5, 6, 7, 8, 9]
i = {}
for d in seed:
print(d)
i["seed"] = d # this gets replaced every time through your loop!
res.append(i.copy()) # need to copy `i`, or else we're updating the same instance
print(res)
要回答你的第一个问题,这是因为种子thew值被覆盖,如下所示:
>>> p = {'t':'H'}
>>> p['t'] = 'k'
>>> p
{'t': 'k'}
我对你问题的第二部分相混淆。精心制作更多?
问题在于你在哪里定义我。我想认为你打算有一个名为i的字典对象,它具有名为“seed”的单个属性。并且您想要将这些字典添加到res。
实际上,您只有一个名为i的字典,并且每次通过循环更新其中的值。
试试这个:
res = []
seed = [1, 2, 3, 4, 5, 6, 7, 8, 9]
for d in seed:
i = {}
print(d)
i["seed"] = d
res.append(i)
print(res)
,将创建我的新实例为每个循环,你应该得到你正在寻找的结果。
感谢您的帮助,我应该已经创建我在循环内。干杯。 – efbbrown
python中的大括号{}
代表dictionaries,它基于键和值工作。每次迭代循环时,都会用列表种子的当前值覆盖键:'seed'。因此,当循环结束时,列表的最后一个值是种子在字典i中的当前值。
'我['seed'] = d'应该做什么? – hpaulj
其添加关键种子的字典,(正在被覆盖) – Corgs