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

如何将Python嵌套dict内的tuple键转换为三级嵌套dict结构

解法1:使用dict.setdefault(无额外依赖,推荐)

无需导入额外模块,直接用Python原生字典方法即可省略显式的key存在性判断,性能和你原有实现完全一致,时间复杂度为O(n):

new_d = {}
for key1, inner_dict in d.items():
    new_d[key1] = {}
    for (key2, key3), value in inner_dict.items():
        new_d[key1].setdefault(key2, {})[key3] = value

setdefault方法会自动判断key2是否存在于当前二级字典中:不存在则先赋值为空字典{},存在则直接返回对应的二级字典,之后直接写入key3:value即可,完全替代原有代码中的if-else判断。


解法2:使用collections.defaultdict(写法更简洁)

如果可以使用Python标准库,defaultdict可以进一步简化写法:

from collections import defaultdict

new_d = {}
for key1, inner_dict in d.items():
    level2 = defaultdict(dict)
    for (key2, key3), value in inner_dict.items():
        level2[key2][key3] = value
    new_d[key1] = dict(level2) # 若允许二级字典为defaultdict类型可省略这一步

补充说明

两种实现的性能和你原始的循环写法完全一致,都是遍历所有内层键值对一次,没有额外性能损耗,且代码更简洁易读,属于Python中处理嵌套字典的常用写法。

如果追求纯字典推导式的写法也可以实现,但会额外遍历内层数据两次,数据量较大时性能更差,不推荐生产环境使用。

内容的提问来源于stack exchange,提问作者Alon.b

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 07:45:03