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

Python如何递归解析字典并构建嵌套Accordion组件?

如何递归解析多层嵌套字典,构建Dash的Accordion嵌套组件?

递归实现方案

递归的核心逻辑是遍历字典的每个键值对,对每个子字典递归处理,自动生成对应的嵌套Accordion/AccordionItem结构,彻底解决手动分层的繁琐问题。

针对演示类的递归实现

基于你提供的无依赖演示类,编写递归函数如下:

class Accordion:
    def __init__(self, list_):
        self.list_ = list_

    def __str__(self):
        return f'Accordion({self.list_})'
    
    def append_(self, item):
        return self.list_.append(item)
    
   
class AccordionItem:
   def __init__(self, list_, title):
        self.list_ = list_
        self.title = title

   def __repr__(self):
        return f"AccordionItem('{self.list_}', title='{self.title}')"

def build_accordion(nested_dict):
    # 创建当前层级的Accordion容器
    accordion = Accordion([])
    for title, child_dict in nested_dict.items():
        if not child_dict:  # 叶子节点(空字典)
            item = AccordionItem([], title)
        else:  # 递归处理子字典,生成子Accordion
            child_accordion = build_accordion(child_dict)
            item = AccordionItem(child_accordion, title)
        accordion.append_(item)
    return accordion

# 测试
d = {'1': {'1.1': {'1.1.1': {}}, '1.2': {'1.2.1': {}}}, 
     '2': {'2.1': {'2.1.1': {}}, '2.2': {'2.2.2': {}}}}

C = build_accordion(d)
print(C)

运行后会生成和手动分层完全一致的结构,且支持任意深度的嵌套字典。

适配Dash Bootstrap Components的版本

对应到dbc组件,只需调整类和属性名称(将list_替换为children,直接操作children.append):

import dash_bootstrap_components as dbc

def build_dbc_accordion(nested_dict):
    accordion = dbc.Accordion([])
    for title, child_dict in nested_dict.items():
        if not child_dict:
            item = dbc.AccordionItem([], title=title)
        else:
            child_accordion = build_dbc_accordion(child_dict)
            item = dbc.AccordionItem(child_accordion, title=title)
        accordion.children.append(item)
    return accordion

# 测试
d = {'1': {'1.1': {'1.1.1': {}}, '1.2': {'1.2.1': {}}}, 
     '2': {'2.1': {'2.1.1': {}}, '2.2': {'2.2.2': {}}}}

C = build_dbc_accordion(d)
print(C)

这段代码会生成你需要的嵌套Accordion结构,无论字典嵌套深度如何,都能自动适配。

逻辑说明

  • 递归函数build_accordion接收嵌套字典作为输入
  • 遍历每个键值对,判断值是否为空字典:
    • 空字典:视为最内层节点,创建子元素为空列表的AccordionItem
    • 非空字典:递归调用函数处理子字典,得到子层级的Accordion,再包装为当前层级的AccordionItem
  • 将所有生成的AccordionItem添加到当前层级的Accordion子元素列表,最终返回该Accordion

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 07:24:12