如何有效地存储依赖项的动态菜单?

2024-09-22 10:31:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个用户控制的相关下拉菜单(共5个),用于缩小问题的具体根源。这些信息很容易存储在数据库中(见下文),但是我在如何有效地将其存储在内存中遇到了一些问题,这样我就可以创建一组5个组合框,当父对象发生更改时,每个后续框都会被填充。我不想在每次下拉列表更改后查询表,因为它会引入明显的延迟。你知道吗

我的桌子是这样的:

RootItem1   SubItem1    SubItemA    SubItemB    SubItemC
RootItem1   SubItem1    SubItemA    SubItemB    SubItemD
RootItem1   SubItem1    SubItemA    SubItemB    SubItemE
RootItem1   SubItem1    SubItemA    SubItemF    
RootItem1   SubItem1    SubItemA    SubItemF    SubItemG
RootItem1   SubItem1    SubItemA    SubItemF    SubItemH
RootItem1   SubItem1    SubItemI    SubItemJ    SubItemK
RootItem1   SubItem1    SubItemI    SubItemJ    SubItemL
RootItem1   SubItem2
RootItem1   SubItem2    SubItemM
RootItem1   SubItem2    SubItemM    SubItemN
RootItem2   SubItem3    SubItemO    SubItemP
RootItem2   SubItem3    SubItemQ    SubItemR
RootItem3   SubItem4    SubItemS    SubItemT
RootItem3   SubItem4    SubItemU
RootItem3   SubItem4    SubItemV    SubItemW    SubItemX
RootItem3   SubItem5    SubItemY
RootItem3   SubItem5    SubItemY    SubItemZ

需要注意的是,并非所有项目都使用所有5个子组。你知道吗

我最初的想法是创建一个5D字典来存储这个,然后匹配子组合框来填充这个框。字典的第一部分是这样的:

d = {
    'RootItem1': {
        'SubItem1': {
            'SubItemA': {
                'SubItemB': ['SubItemC', 'SubItemD', 'SubItemE'],
                'SubItemF': ['', 'SubItemG', 'SubItemH'],
            }
            'SubItemI': {
                'SubItemJ': ['SubItemK', 'SubItemL']
            }
        },
        'SubItem2': {
            '': {},
            'SubItemM': {
                '': [],
                'SubItemN': ['']
            },
            'SubItemO': {
                'SubItemP': ['']
            }       
        }
    }
}

我的问题是,当上层没有子元素时,很难理解。有很多''键。你知道吗

如何有效地生成一种方法,将表从上面存储到一个数据结构中,我可以使用该数据结构快速填充5个下拉框,每个下拉框从上一个下拉框中获取其值?你知道吗


Tags: 下拉框subitemmsubitem4subitemisubitemerootitem3subitemcsubitemd