2013-05-05 77 views
0

我有3個字典Python字典KeyError異常和多本字典

a = {1:'this' ,2:'is' ,3:'an' ,4:'example'} 
b = {4:'this' ,5:'is' ,6:'example'} 
c = {7:'this' ,8:'is'} 

for i in range(10): 
    print a[i] ,b[i] ,c[i] 

它會導致一個KeyError異常,我怎麼知道這三個字典引發的錯誤?有沒有簡單的方法。

任何幫助表示感謝你。

+0

將其分成多行...或使用調試器 – JBernardo 2013-05-05 18:25:19

回答

2

由於Python異常回溯是基於行的,而不是基於標記的,所以沒有辦法用您當前的代碼執行此操作。

相反,你可以使用的字典中.get()方法,檢查每一個結果,看它是否是None(或者如果值實際上可能是None通常情況下,提供自己的替代默認值)。

for i in range(10): 
    # if a key is missing in a, x will be None, etc. 
    x, y, z = a.get(i), b.get(i), c.get(i) 

或者,你可能只是打破你print報表爲多行:

for i in range(10): 
    print a[i], 
    print b[i], 
    print c[i] 

然後你可以根據需要單獨try塊包裝他們。

+0

感謝琥珀,但我的原代碼更復雜,涉及數學操作,如分割和乘法,我不能將它們分成多行。還有什麼想法? – 2013-05-05 18:33:29

+0

使用中間變量,而不是嘗試內聯所有查找。 – Amber 2013-05-05 18:34:36

+0

好主意會回來的結果。 – 2013-05-05 18:38:59