如何在嵌套字典中使用 .get()?

how to use .get() in a nested dict?

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

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

但是,我有一些字典,其中我要检查的键在结构中更深,我不知道祖先是否存在。如果字典是 b = {'x': {'y': {'z': True}}} 我必须求助于

In [5]: b.get('x') and b['x'].get('y') and b['x']['y'].get('z')
Out[5]: True

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

您可以 return 来自 dict.get() 的空字典对象以简化链接调用:

b.get('x', {}).get('y', {}).get('z')

但也许您最好捕获 KeyError 异常:

try:
    value = b['x']['y']['z']
except KeyError:
    value = None