我有一个嵌套字典。是否只有一种方法可以安全地取出值?
try:
example_dict['key1']['key2']
except KeyError:
pass
或者也许 python 有一个类似 get()
的方法用于嵌套字典?
原文由 Arti 发布,翻译遵循 CC BY-SA 4.0 许可协议
我有一个嵌套字典。是否只有一种方法可以安全地取出值?
try:
example_dict['key1']['key2']
except KeyError:
pass
或者也许 python 有一个类似 get()
的方法用于嵌套字典?
原文由 Arti 发布,翻译遵循 CC BY-SA 4.0 许可协议
2 回答5.2k 阅读✓ 已解决
2 回答1.1k 阅读✓ 已解决
4 回答1.4k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
2 回答864 阅读✓ 已解决
1 回答1.7k 阅读✓ 已解决
您可以使用
get
两次:这将返回
None
如果key1
或key2
不存在。请注意,如果
example_dict['key1']
存在但不是字典(或具有get
方法的类似字典的对象),这仍然可能引发AttributeError
。您发布的try..except
代码将引发TypeError
而不是example_dict['key1']
是不可订阅的。另一个区别是
try...except
在第一个丢失的键之后立即短路。get
调用链没有。如果您希望保留语法
example_dict['key1']['key2']
但不希望它引发 KeyErrors,那么您可以使用 Hasher 配方:请注意,当缺少密钥时,这会返回一个空的 Hasher。
因为
Hasher
是 --- 的子类,dict
你可以像使用dict
一样使用 Hasher。所有相同的方法和语法都可用,Hashers 只是以不同的方式处理缺失的键。您可以将常规
dict
转换为Hasher
如下所示:并将
Hasher
转换为常规dict
同样容易:另一种选择是在辅助函数中隐藏丑陋之处:
所以你的代码的其余部分可以保持相对可读性: