You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

向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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 19:50:33