6 回答

TA貢獻1852條經驗 獲得超7個贊
你只有一個字典,你不斷覆蓋它的鍵id,在循環中創建字典
my_list = []
for i in range(3):
my_dict = {}
my_dict['id'] = str(i)
my_list.append(my_dict) # can shorten in my_list.append({'id' : str(i)})
可以通過列表理解來縮短
my_list = [{'id' : str(i)} for i in range(3)]

TA貢獻1878條經驗 獲得超4個贊
理念:
列表存儲對對象 ( ) 的引用my_dict,因此無論何時更改其中的任何內容my_dict都會反映在列表 ( my_list)中
代碼:
my_list = []
for i in range(3):
my_list.append({'id' : str(i + 1)})
print(my_list)
輸出:
[{'id': '1'}, {'id': '2'}, {'id': '3'}]

TA貢獻1876條經驗 獲得超5個贊
這是我的解決方案:
my_list = []
for i in range(1, 4): # If you put range(3), you'll get [{'id': '0'}, {'id': '1'}, {'id': '2'}]
my_dict = {}
my_dict['id'] = str(i)
my_list.append(my_dict)
print(my_list)
更短的方法可能是:
my_list = []
for i in range(1, 4):
my_list.append({'id' : str(i)})
print(my_list)

TA貢獻2011條經驗 獲得超2個贊
該my_dict實例是在 for 循環之外聲明和分配的,因此您要添加到my_list字典的同一實例中。
您需要為每個循環創建一個新的字典實例:
my_list = []
for i in range(3):
my_dict = {}
my_dict['id'] = str(i)
my_list.append(my_dict)
這段代碼有很多可能的優化方式:
my_list = []
for i in range(3):
my_list.append({'id': str(i)})
最好的 pythonic 方式是列表理解:
my_list = [{'id' : str(i)} for i in range(3)]

TA貢獻1886條經驗 獲得超2個贊
my_list = []
for i in range(0,3):
my_dict = {} # making dictionary every time when running the loop.
my_dict['id'] = str(i) # assigning value
my_list.append(my_dict) #appending in list
my_list

TA貢獻1864條經驗 獲得超6個贊
是的,字典是通過引用傳遞的;所有對象都在 Python 中。橫向當然是按價值傳遞的。
如果將字典直接附加到列表中,代碼可以按預期工作,如下所示:
my_list = []
for i in range(3):
my_list.append({'id': str(i)})
可以按照@Yusef Maali 的建議進行改進:
my_list = [{'id' : str(i)} for i in range(3)]
添加回答
舉報