Python字典遇KeyError时返回None的实现问题
解决方案:处理字典KeyError并返回None
先排查
dict.get()失效的核心原因:如果是访问嵌套字典的深层键,直接用dict.get('key1.key2')是无效的,必须逐层调用get方法:# 示例:获取嵌套字典的深层值,不存在则返回None nested_dict = {'a': {'b': 123}} value = nested_dict.get('a', {}).get('b', None) # 若a不存在,get('a', {})返回空字典,再调用get('b')就返回None如果你自己实现的方法遇到KeyError无法返回None,直接用try-except捕获异常即可:
def safe_get(d, *keys): try: for key in keys: d = d[key] return d except KeyError: return None # 使用示例 test_dict = {'x': {'y': 456}} print(safe_get(test_dict, 'x', 'y')) # 输出456 print(safe_get(test_dict, 'x', 'z')) # 输出None也可以用
collections.defaultdict自定义默认返回值为None:from collections import defaultdict # 创建默认返回None的字典 safe_dict = defaultdict(lambda: None) print(safe_dict['non_existent_key']) # 输出None
内容的提问来源于stack exchange,提问作者Grape Flavored Nerd
相关产品推荐
相关产品推荐

