如何使用python"get()"来获得比第一级字典键更深的键?

ret*_*n 0 5 python dictionary

我有一个python字典,有超过2个级别,如下所示:

dict = {'keyA_1':'valueA_1', 'keyB_1': {'keyB_2':{'keyB_3':'valueB_3'}}}
Run Code Online (Sandbox Code Playgroud)

我希望提取的价值'keyA_1'和'keyB_3'.但是,在我的代码中,我不想使用一堆try/except KeyError进行错误检查,因为我有成千上万的键值对.相反,如果密钥不存在,则只返回None.我找到的一个解决方案是使用python get().这很好用但只适用于第一级键值对.

例如,如果'keyA_1'不存在

dict.get('keyA_1')
Run Code Online (Sandbox Code Playgroud)

会回来的 None

但如果'keyB_3'不存在

dict.get('keyB_1').get('keyB_2').get('keyB_3')
Run Code Online (Sandbox Code Playgroud)

将返回AttributeError: 'NoneType' object has no attribute 'get'而不是None

'keyB_3'如果所有父键及其键存在,则返回值时,简单地执行相同操作会很棒None.有什么建议吗?

小智 13

您可以将默认值作为第二个参数传递给dict.get(),如下所示:

dict.get('keyB_1', {}).get('keyB_2', {}).get('keyB_3')
Run Code Online (Sandbox Code Playgroud)