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

9

我使用 .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'

1个回答

8
你可以使用 dict.get() 返回一个空字典对象,以便更轻松地进行链式调用:
b.get('x', {}).get('y', {}).get('z')

但也许最好捕获 KeyError 异常:

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

正如@Martijn所指出的,在Python中,请求宽恕比征得许可更好。因此,处理异常应该是正确的方向! - Caumons

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接