2013-05-05 76 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