Python:try-except vs if-else来检查dict键

Neo*_*Neo 2 python if-statement try-catch

我遇到的代码我不知何故发现"奇怪".

var = None
try:
  var = mydict[a][b]
except:
  pass
Run Code Online (Sandbox Code Playgroud)

我不太习惯使用try-except检查dict键,显然有一个if-else序列来处理相同的情况.

var = None
if a in mydict:
    if b in mydict[a]:
        var = mydict[a][b]
Run Code Online (Sandbox Code Playgroud)

使用一种方法比另一种方法有任何"明显的"优势/劣势吗?

Eri*_*ban 6

异常处理通常比if语句慢得多.由于存在嵌套字典,因此很容易理解作者使用异常语句的原因.但是,以下也可以.

var = mydict.get(a,{}).get(b,None)

if var is None:
   print("Not found")
else:
   print("Found: " + str(var))
Run Code Online (Sandbox Code Playgroud)

当键不存在时get,dict对象的使用返回默认值.