2015-04-04 54 views
0

什麼是修復下面的代碼如何在python獲得計數器的值循環

my_list=[] 
elem={} 
for i in range(4): 
    elem['id']=i 
    my_list.append(elem) 
print my_list 

結果

[{'id': 3}, {'id': 3}, {'id': 3}, {'id': 3}] 

預期的結果

[{'id': 0}, {'id': 1}, {'id': 2}, {'id': 3}] 

最好的辦法**我不想使用其他變量

回答

4

Y您需要清空for循環本身內的字典。

my_list=[] 
elem={} 
for i in range(4): 
    elem['id']=i 
    my_list.append(elem) 
    elem={} 
print my_list 

輸出:

[{'id': 0}, {'id': 1}, {'id': 2}, {'id': 3}] 

OR

簡單,

my_list=[] 
for i in range(4): 
    elem = {} 
    elem['id']=i 
    my_list.append(elem) 

print my_list 
+1

'爲i的範圍(4):ELEM = {} ELEM [ 'ID'] = I my_list.append(ELEM)'我認爲,我們不需要聲明'elem = {}'兩次。 – 2015-04-04 02:38:41

+0

我們還可以將elem = {}作爲循環中的第一個語句,並在循環之前擺脫第一個語句。 – Tarik 2015-04-04 02:41:09

+0

完成,感謝您的意見.. – 2015-04-04 02:42:57

4

Python的方式:列表理解

>>> [{'id':x} for x in range(4)] 
[{'id': 0}, {'id': 1}, {'id': 2}, {'id': 3}] 
3
my_list = [] 
for i in range(4): 
    mylist.append({'id': i}) 

這實際上等效於:

my_list = [{'id': i} for i in range(4)] 
相關問題