python学习-字典2

    字典2是对字典1的优化,因为字典1中嵌套了过多的循环。在工作的过程中,有些前辈建议,如果(循环+判断)超过3层,可以尝试用函数来实现一部分功能(将原有逻辑拆分成更小的逻辑)。上大学时,教授操作系统的老师也讲过类似的话:如果一个问题直接解决不了,就讲问题拆分成若干个小问题,一个小问题一个小问题的解决,累加解决大问题。下面是我优化的代码:

#准备菜单
menu_list = {"甘肃":{"兰州":{"城关区":{1:"甘肃地质博物馆", 2:"地球厅", 3:"矿物岩石厅"}, "七里河区":{1:"兰州碑林", 2:"碑轩", 3:"碑亭"}, "西固区":{1:"五一山生态旅游区", 2:"合欢", 3:"水杉", 4:"枇杷"}, "红古区":{1:"白塔山公园", 2:"象皮鼓", 3:"青铜钟", 4:"紫荆树",} }, "敦煌":{"沙州镇":{"敦煌莫高窟":"5A", "鸣沙山-月牙泉风景名胜区":"4A", "阳关遗址":"4A",}, "肃州镇":{"甘肃敦煌雅丹国家地质公园":"4A", "白马塔":"1A"}, }, }, "宁夏":{"中卫市":{"中宁":{"美食":"臊子面", "景点":"双龙寺", "特产":"枸杞",}, "中卫":{"美食":"馓子", "景点":"沙坡头", "特产":"羊皮筏子",}, }, "吴忠":{"利通区":{1:"柴园村", 2:"李园村", 3:"石佛寺村"}, "青铜峡市":{1:"刘碱滩村", 2:"洼路沟村", 3:"二道桥村"}, "盐池县":{1:"杨岔村", 2:"吴家桥村", 3:"郭家桥村", 4:"刘家湾村",}, "同心县": {1:"山水沟村", 2:"清水沟村", 3:"涝河桥村", 4:"马家湾村",}, }, "银川":{"银川市":{1:"海宝塔", 2:"华夏西部影视城", 3:"纳家户清真寺", 4:"中大寺和南关清真大寺",}, "西夏区":{"景区":"西夏王陵"}, }, }, } last_layer = [ menu_list ] current_layer = menu_list #优化的思路是将进入下一层级之前的层级目录存在列表中,如果返回上一层,则将列表中的相关层级目录删除
#例如 宁夏-->吴忠 list 加入 宁夏;如果从吴忠返回宁夏,则将 list中的宁夏删除。
while True: for key in current_layer: print(key) choice = input(">>:").strip() if len(choice) == 0:continue #输入不合法,则下面代码不会执行,重新输入 if choice in current_layer: #判断输入内容是否在当前操作字典层级中 last_layer.append(current_layer) current_layer = current_layer[choice] if choice == "b": #返回上一层判断 if last_layer: current_layer = last_layer[-1] #将当前层级目录名取出 last_layer.pop() #删除列表中对应项 if choice == "q": exit()

 

转载于:https://www.cnblogs.com/maoxiong1985/p/7830809.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值