向Python嵌套字典添加元素触发KeyError报错的问题求助
解决Python嵌套字典赋值时的KeyError问题
你遇到的问题根源很清晰:你创建的res_checks是空字典,当执行res_checks['arg1']['sub1'] = 'test'时,Python会先尝试获取res_checks['arg1'],但这个键并不存在,因此抛出KeyError: 'arg1'。以下是几种可行的解决方式:
先初始化外层子字典
先为arg1键创建一个空字典,再给其子键赋值:res_checks = dict() res_checks['arg1'] = {} res_checks['arg1']['sub1'] = 'test' print(res_checks) # 输出: {'arg1': {'sub1': 'test'}}使用
setdefault()方法
该方法会自动检查键是否存在,不存在则创建并设置默认值(此处为空字典):res_checks = dict() res_checks.setdefault('arg1', {})['sub1'] = 'test' print(res_checks) # 输出: {'arg1': {'sub1': 'test'}}使用
collections.defaultdict
提前指定默认的字典类型,访问不存在的键时会自动生成对应的子字典:from collections import defaultdict res_checks = defaultdict(dict) res_checks['arg1']['sub1'] = 'test' print(dict(res_checks)) # 输出: {'arg1': {'sub1': 'test'}}直接定义完整嵌套结构
如果一开始就明确字典结构,可以直接一次性定义:res_checks = {'arg1': {'sub1': 'test'}} print(res_checks) # 输出: {'arg1': {'sub1': 'test'}}
内容的提问来源于stack exchange,提问作者ibnelhithem
相关产品推荐
相关产品推荐

