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

时间:2017-02-12 20:11:08

标签: python data-structures

我有一个用户控制的依赖性下拉菜单(总共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个下拉框,每个下方的框从前一个框中获取它的值?

0 个答案:

没有答案