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

如何通过循环构建基于OS/Python/ML ID的三级嵌套字典?

构建三级嵌套字典实现兼容性数据分组

你可以通过逐层构建嵌套结构来实现需求,这里提供两种实用方案:

方法一:基础循环手动实现

通过判断每一层键的存在性,逐步创建字典和集合容器,最终将ml_id加入对应集合:

# 初始化空字典
compatibility_dict = {}

for item in compatibility:
    os_id = item.os_id
    python_id = item.python_id
    ml_id = item.ml_id
    
    # 处理第一层:os_id对应的字典
    if os_id not in compatibility_dict:
        compatibility_dict[os_id] = {}
    # 处理第二层:python_id对应的集合
    if python_id not in compatibility_dict[os_id]:
        compatibility_dict[os_id][python_id] = set()
    # 将ml_id添加到目标集合
    compatibility_dict[os_id][python_id].add(ml_id)

方法二:用collections.defaultdict简化代码

借助defaultdict自动生成缺失的嵌套结构,大幅简化代码逻辑:

from collections import defaultdict

# 定义嵌套结构:外层字典的值是"值为集合的字典"
compatibility_dict = defaultdict(lambda: defaultdict(set))

for item in compatibility:
    # 直接通过键路径添加元素,无需手动判断
    compatibility_dict[item.os_id][item.python_id].add(item.ml_id)

# 可选:转换为普通字典(如果不需要defaultdict特性)
compatibility_dict = dict(compatibility_dict)

两种方法最终都会生成你需要的结构:

{1: {1: {1, 2}, 2: {1, 2}}, 2: {1: {1}, 2: {2, 3}}}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 19:15:33