【问题标题】:Python Dictionary KeyError and Multiple DictionariesPython 字典 KeyError 和多个字典
【发布时间】:2013-04-29 13:12:33
【问题描述】:

我有 3 个字典

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,我如何知道三个字典中的哪一个引发了错误?有什么简单的方法。

感谢您的任何帮助。

【问题讨论】:

  • 拆分成多行...或者使用调试器

标签: python exception dictionary try-catch keyerror


【解决方案1】:

目前的代码无法做到这一点,因为 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 块中。

【讨论】:

  • 感谢 Amber,但我的原始代码要复杂得多,并且涉及除法和乘法等数学运算,我无法将它们分成多行。还有什么想法吗?
  • 使用中间变量,而不是尝试内联所有查找。
  • 好主意会带来结果。
  • 谢谢琥珀!虽然它没有解决问题,但它现在对我来说变得更容易调试了! :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-06
相关资源
最近更新 更多