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

Python如何同时为顶层字典与嵌套字典创建对应键值对

解决方案

报错原因

直接执行famCountDictofDicts["three"]["threeA"] = 1会触发KeyError,是因为顶层字典中不存在three这个键,无法直接访问不存在键的嵌套属性。

可行实现方案

方案1:使用collections.defaultdict(适配批量处理场景,最推荐)

这个方案适配你处理多个DataFrame的需求,不需要手动判断顶层键是否存在,默认会为不存在的顶层键自动创建空嵌套字典:

from collections import defaultdict

# 初始化时指定默认值为字典,原有数据可以直接传入初始化
famCountDictofDicts = defaultdict(dict, {
    "one": {"oneA": 1, "oneB": 2, "oneC": 3}, 
    "two": {"twoA": 1, "twoB": 2, "twoC": 3}
})

# 可以直接按你期望的写法赋值
famCountDictofDicts["three"]["threeA"] = 1

输出结果和你预期完全一致:

{'one': {'oneA': 1, 'oneB': 2, 'oneC': 3},
 'two': {'twoA': 1, 'twoB': 2, 'twoC': 3},
 'three': {'threeA': 1}}

方案2:使用字典内置setdefault方法(不需要导入额外库)

如果不想引入额外模块,可以用原生字典的setdefault方法,不存在对应顶层键时自动创建空字典:

# 原有普通字典不需要修改定义
famCountDictofDicts = {"one": {"oneA": 1, "oneB": 2, "oneC": 3}, "two": {"twoA": 1, "twoB": 2, "twoC": 3}}

# 赋值时先调用setdefault
famCountDictofDicts.setdefault("three", {})["threeA"] = 1

业务场景适配说明

批量处理DataFrame列表存储变量时,用defaultdict方案效率最高,遍历每个DataFrame时直接用DataFrame的标识作为顶层键,变量名作为嵌套键赋值即可,不需要额外做键存在性判断,天然适配不同DataFrame变量不一致的情况。

内容的提问来源于stack exchange,提问作者Lamma

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.17 03:15:01