Python递归实现多层嵌套dict遍历实例--三级菜单/多级菜单功能
要求:构建一个三(N)级菜单,实现用户可以根据指示选择进入菜单,退出菜单,返回上层菜单功能。
知识点:dict数据的遍历方法,递归遍历方法。
环境:Python3.6
实现代码:
#!/usr/bin/evn python # -*-coding:utf8 -*- class menu(object): def __init__(self, menus): self.menus = menus def view_dict(self,menu): print('请输入进入地区,输入"b"返回上层菜单,输入"q"退出'.center(40, '-')) print('\n'.join([str(key) for key in menu])) choice = input("请选择>>:") if choice == 'q': exit() elif choice == 'b': if menu != self.menus: return else: print('已经是最顶层目录,请选择或退出,谢谢'.center(40,' ')) self.view_dict(menu) elif choice in [key for key in menu]: if type(menu[choice]).__name__=='dict': self.view_dict(menu[choice]) self.view_dict(menu) else: print('\n'.join([item for item in menu[choice]])) print('已经是最后一层,返回请输入"b",退出请输入"q",谢谢!'.center(40,'*')) self.view_dict(menu) else: print('请输入正确口令,谢谢!') self.view_dict(menu) if __name__=='__main__': zone = { '山东': { '青岛': ['四方', '黄岛', '崂山', '李沧', '城阳'], '济南': ['历城', '槐荫', '高新', '长青', '章丘'], '烟台': ['龙口', '莱山', '牟平', '蓬莱', '招远'] }, '江苏': { '苏州': ['沧浪', '相城', '平江', '吴中', '昆山'], '南京': ['白下', '秦淮', '浦口', '栖霞', '江宁'], '无锡': ['崇安', '南长', '北塘', '锡山', '江阴'] }, '浙江': { '杭州': ['西湖', '江干', '下城', '上城', '滨江'], '宁波': ['海曙', '江东', '江北', '镇海', '余姚'], '温州': ['鹿城', '龙湾', '乐清', '瑞安', '永嘉'] }, '安徽': { '合肥': ['蜀山', '庐阳', '包河', '经开', '新站'], '芜湖': ['镜湖', '鸠江', '无为', '三山', '南陵'], '蚌埠': ['蚌山', '龙子湖', '淮上', '怀远', '固镇'] }, '广东': { '深圳': ['罗湖', '福田', '南山', '宝安', '布吉'], '广州': ['天河', '珠海', '越秀', '白云', '黄埔'], '东莞': ['莞城', '长安', '虎门', '万江', '大朗'] }} view = menu(zone) view.view_dict(zone)
运行结果: