欢迎来到Louis的博客

人生三从境界:昨夜西风凋碧树,独上高楼,望尽天涯路。 衣带渐宽终不悔,为伊消得人憔悴。 众里寻他千百度,蓦然回首,那人却在灯火阑珊处。
扩大
缩小

python 字典实现多级菜单 --- 再手动写一遍

menu = {
    '北京':{
        '海淀':{
            '五道口':{
                'soho':{},
                '网易':{},
                'google':{}
            },
            '中关村':{
                '爱奇艺':{},
                '汽车之家':{},
                'youku':{},
            },
            '上地':{
                '百度':{},
            },
        },
        '昌平':{
            '沙河':{
                '老男孩':{},
                '北航':{},
            },
            '天通苑':{},
            '回龙观':{},
        },
        '朝阳':{},
        '东城':{},
    },
    '上海':{
        '闵行':{
            "人民广场":{
                '炸鸡店':{}
            }
        },
        '闸北':{
            '火车战':{
                '携程':{}
            }
        },
        '浦东':{},
    },
    '山东':{},
}

layer = [menu,]        #使用列表记录当前位置,当前位置就是-1

while True:
    current_layer = layer[-1]      #当前位置
    for i in current_layer:        
        print(i)
    choice = input("请输入[b返回上层,q退出]:")
    if choice in current_layer:      #判断输入
        if not current_layer[choice]:   #下层没数据返回提示
            print("没数据到底啦!")
        else:
            layer.append(current_layer[choice])#下层有数据,将下层数据加入到layer,下次循环current_layer就会变成choice子节点。
    elif choice == "b":
        if len(layer) == 1:            #顶层
            print("到顶了!")
        else:
            layer.pop()              #返回上层,删除当前的layer[-1],下次循环current_layer变成上层
    elif choice == "q":
        break
    else:
        print("输入有误!!!")

使用一个列表记录当前的位置,方法比较巧妙,以后有这种字典嵌套多层需要操作的可以借鉴下思路

posted on 2018-08-04 17:19  Louiszj  阅读(197)  评论(0编辑  收藏  举报

导航