使用 python 构建嵌套菜单

Build a nested menu using python

我正在为连接到 Raspberry PI 的 LCD 屏幕开发 GUI。

我想从这样的字典构建一个菜单:

my_menu = {
    "menu1": {
        "submenu1": {
            "subsubmenu1": None
        },
        "submenu2": None,
        "submenu3": None,
    },
    "menu2": {
        "submenu1": None,
        "submenu2": None,
    }
}

for item in my_menu:
    print(item)
}

我想保持字典中定义的相同顺序。

问题是 python 词典无序,LCD 屏幕上的菜单项显示顺序不正确。

这样我可以让它在 JS(使用 json)或 PHP(使用数组)中轻松工作,但我刚开始使用 python 并且我不知道使用该语言的最佳方式。

我已经阅读了一些关于 OrderedDict 的文章,但我不确定这是个好主意。

所以我的问题是 "how to do it in a clean and efficient way"。

我的代码在 python 2.7 下运行,但如果需要我可以升级版本。

感谢您的宝贵时间!

进入有序字典,然后对子菜单进行排序

from collections import OrderedDict

unsorted = {
    "menu2": {
        "submenu2": {
            "subsubmenu1": None
        },
        "submenu3": None,
        "submenu1": None,
    },
    "menu1": {
        "submenu3": None,
        "submenu1": None,
    }
}

ord_menu = OrderedDict(sorted(unsorted.items()))
for k,v in ord_menu.items():
    print(sorted(v))
    ord_menu[k] = sorted(v)
print(ord_menu)  

如果你只是想保留顺序,只需升级 -from python 3.6 以后的 dict 顺序被保留,from here.