如何在嵌套的dict中使用.get()?

WoJ*_*WoJ 9 python dictionary

.get()用来查询字典中可能存在或不存在的键.

In [1]: a = {'hello': True}
In [3]: print(a.get('world'))
None
Run Code Online (Sandbox Code Playgroud)

但是,我有字典,我要检查的密钥在结构中更深,我不知道祖先是否存在.如果是dict b = {'x': {'y': {'z': True}}},我必须诉诸

In [5]: b.get('x') and b['x'].get('y') and b['x']['y'].get('z')
Out[5]: True
Run Code Online (Sandbox Code Playgroud)

检查'z'时,我不知道是否'x''y'存在?

Mar*_*ers 8

您可以返回空字典对象dict.get()以简化链接调用:

b.get('x', {}).get('y', {}).get('z')
Run Code Online (Sandbox Code Playgroud)

但也许你最好去捕捉KeyError异常:

try:
    value = b['x']['y']['z']
except KeyError:
    value = None
Run Code Online (Sandbox Code Playgroud)