[英]How do I access each element in list in for-loop operations?
我正在遍歷這個列表,不明白為什么print(d)
返回seed
每個數字,但分配i["seed"] = d
分配了seed
的最后一個元素。
如何訪問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。 我認為您打算擁有一個名為 i 的字典對象,該對象具有名為“seed”的單個屬性。 並且您想將這些詞典添加到 res.txt 中。
實際上,您只有一個名為 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)
這將為每個循環創建一個新的 i 實例,你應該得到你正在尋找的結果。
問題是只有一個對象i
,並且您每次都在循環中替換它的值。 通過最后一次迭代,您的(一個實例) i 的值設置為您分配給它的最后一項。 每次附加到res
,您基本上是將 a 指針附加到同一個對象(因此,當循環完成時,最終有 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)
要回答您的第一個問題,這是因為種子的 w 值被覆蓋,如下所示:
>>> p = {'t':'H'}
>>> p['t'] = 'k'
>>> p
{'t': 'k'}
我對你問題的第二部分感到困惑。 再詳細點?
python 中的大括號{}
表示基於鍵和值工作的字典。 每次遍歷循環時,都會用列表種子的當前值覆蓋 key: 'seed'。 所以當循環結束時,列表種子的最后一個值是字典 i 中種子的當前值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.