【发布时间】:2019-07-15 09:30:05
【问题描述】:
实际上,我已经知道我想做的事情有点奇怪,但我认为它很适合我的代码,所以我问:
有没有办法做这样的事情:
foo = { 'a':1, 'b':2, 'c':3 }
bar = { 'd':4, 'f':5, 'g':6 }
foo.get('h', bar.get('h'))
引发异常而不是None,以防 dict.get() '失败'?
foo.get('h', bar.get('h', raise)) 将提高 SyntaxError
foo.get('h', bar.get('h', Exception)) 只会返回 Exception
目前我只是在使用if not foo.get('h', bar.get('h')): raise Exception,但如果有办法直接在dict.get() 中加注,我会非常高兴。
谢谢
【问题讨论】:
-
你可以继承 dict 并让
get做你想做的事 -
不要使用
get(),因为它会为您捕获 IndexError。如果你真的想要 IndexError,只需使用foo['h'] -
“只使用括号”的答案是正确的,但这里有一个解释为什么:stackoverflow.com/a/11041421/769971 另外,我保证在以后的路上
.get()函数将对您有用。你也应该学习如何使用它。 -
没错,我知道为什么使用.get(),我只是想在找不到密钥而不是
None时引发异常,而不必使用条件
标签: python dictionary exception-handling