使用 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.
我正在为连接到 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.