Python3学习笔记3:N级菜单的实现,列表(list)、字典(dict)的使用
今天是学习Python3的第二天,坚持每一次学习都有一点点知识的积累,瞄准机器学习、深度学习技术的终极目标gogogo!这次先从练手开始(题目源自老男孩)
N级菜单:
简单实现N级菜单,能够退出、退回上一层;
菜单的实现,不能限制菜单的级别,要求支持N级菜单,根据菜单深度需求自适应。
先上代码:
#Author wsp
menu = {
'首页': {
'大屏页': {
'折线图': {
'折线图1': {},
'折线图2': {},
'折线图3': {}
},
'视频监控': {
'视频1': {},
'视频2': {},
'视频3': {},
},
'饼图': {
'饼图1': {},
},
},
'地图': {
'百度地图': {
'风场': {},
'配电室': {},
},
'模块地图': {},
'模拟地图': {},
},
'统计': {},
'预测': {},
},
'告警信息': {
'历史告警': {
"告警查询": {
'模糊搜索': {}
}
},
'实时告警': {
'告警处理': {
'告警分析': {}
}
},
'告警统计': {},
},
'监视': {},
}
##当前选择菜单
current_menu = menu
##选择记录的追踪列表
choice_list = [menu]
while True:
for me in current_menu:
print("->{listname}".format(listname=me))
choice = input("选择当级菜单(输入'b'为返回上一级,输入e''为退出程序)->")
if choice == 'b':
#[-1]代表选取列表的最后一个元素,这里代表选择上一级菜单
current_menu = choice_list[-1]
#选择完上一级菜单之后,菜单选择列表弹出最后一个元素,代表回退
choice_list.pop()
elif choice == 'e':
print("退出菜单选择,谢谢使用")
break
elif not current_menu.__contains__(choice):
continue
else:
choice_list.append(current_menu)
current_menu = current_menu[choice]
在本例中使用了两个重要的存储数据的工具:列表(list)、字典(dict)
其中menu的装载使用了字典与列表的复合结构,上级菜单与下级菜单的结构是字典结构,同级菜单是列表中的元素;
选择记录的追踪使用了列表进行存储。
知识点:
dict字典:key-value的数据结构体,类似于Java中的map,本例中除了构造之外还是用了两个操作方法:
#判定是否存在choice为key的数据
current_menu.__contains__(choice)
#获取key为数据的value,本例中也就是对应的子节点咯。
current_menu[choice]
list列表:列表存储结构体,和Java中的列表类似,本例中的使用如下:
#获取元素,重要的是-1代表最后一个元素
choice_list[-1]
#弹出最后一个元素
choice_list.pop()
由此拓展:python中[-1]、[:-1]、[::-1]、[n::-1]使用方法,以下借鉴:https://blog.csdn.net/qq_21840201/article/details/85084621
import numpy as np
a=np.random.rand(5)
print(a)
[ 0.64061262 0.8451399 0.965673 0.89256687 0.48518743]
print(a[-1]) ###取最后一个元素
[0.48518743]
print(a[:-1]) ### 除了最后一个取全部
[ 0.64061262 0.8451399 0.965673 0.89256687]
print(a[::-1]) ### 取从后向前(相反)的元素
[ 0.48518743 0.89256687 0.965673 0.8451399 0.64061262]
print(a[2::-1]) ### 取从下标为2的元素翻转读取
[ 0.965673 0.8451399 0.64061262]
OK,机器学习、深度学习技术我离你更近啦,等我先学完Python基础!
对Python有兴趣的朋友可以留言相互学习相互进步,加油!祝福浏览文章的每位朋友!