2013-12-10 80 views
0

這裏的響應在一個字典中有一個表單值存儲在字典中。我的輸出是用分開的字典生成的,我不需要單獨的字典。我想在一個字典只在詞典輸出沒有得到預期的PYTHON

resp = {} 
b = [] 
for i in range(1, 10): 
    resp_i = form.getvalue('opt_%d' %i, '0') 
    resp[i] = int(resp_i) 
    arg = {i : resp[i]} 
    b.append(arg) 
    #print len(b) 
for each in b: 
    print each 

實際輸出的所有元素:{1:1} {2:1} {3:3} {4:1} {5:3} {6:0} { 7:0} {8:0} {9:0}

預期輸出:{1:1,2:1,3:3,4:1,5:3,6:0,7: 8:0,9:0}

+1

我認爲你需要RESP,而打印速度比B [] .. –

回答

2

的問題是在這裏:

b = [] 
for ... 
    arg = {i: resp[i]} # creates a new dict 
    b.append(arg) # adds the dict to the list 

什麼,你可能尋找的是這樣的:

b = {} 
for ... 
    b.update(arg) 

當然,這仍然不是最乾淨的方法。畢竟,爲什麼要創建所有的臨時詞典?

b = {} 
for ... 
    b[i] = resp[i] 

會工作,或者你甚至可能甚至把它全部變成字典理解。

+0

可以ü強制編輯和展示我的代碼,請 – Amy

+1

@ user3003685 - 鑑於你的代碼,你是否試圖把'print resp'放在循環結尾?我認爲這實際上可能夠好。 – mgilson

+0

謝謝..我已經更新了一個相同的,但無法解決這個問題 – Amy

0
def form_getvalue(i): 
    return ('0', '1', '1', '3', '1', '3', '0', '0', '0', '0')[i] 

resp = {} 
for i in range(1, 10): 
    resp[i] = int(form_getvalue(i)) 

print 'resp=%s' % (resp,) 

上面的輸出是:

resp={1: 1, 2: 1, 3: 3, 4: 1, 5: 3, 6: 0, 7: 0, 8: 0, 9: 0}