多级字典练习题


2019-12-08_22-03-10.png

普通版:

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

while True:
    for index in menu:
        print(index)
    choice=input(">").strip()     #第一层
    if not choice:continue
    if  choice in menu:
        while True:
            for index in menu[choice]:
                print(index)
            choice2 = input(">>").strip()       #第二层
            if not choice2:continue
            if  choice2 in menu[choice]:
                while   True:
                    for index in menu[choice][choice2]:
                        print(index)
                    choice3= input(">>>").strip()       #第三层
                    if not choice3:continue
                    if  choice3 in menu[choice][choice2]:
                        print("go to",menu[choice][choice2][choice3])
                    elif choice3=="b":
                        break
                    elif choice3=="q":
                        exit("bye.")
                    else:
                        print("节点不存在")
            elif choice2 =="b":
                break
            elif choice2=="q":
                exit("bye.")
            else:
                print("节点不存在")

高效版

current_layer=menu
layers=[]
while True:
    for index in current_layer:
        print(index)
    choice=input(">").strip()
    if not choice:continue
    if choice in current_layer:
        layers.append(current_layer)
        current_layer=current_layer[choice]
    elif choice =="b":
        if len(layers) !=0:#判断如果layers的长度不等于0
            current_layer=layers.pop()#那么就将current_layer更新为02减去最后一个元素
        else:
            print("已到顶层")

声明:苏茗鹿的空间|版权所有,违者必究|如未注明,均为原创|本网站采用BY-NC-SA协议进行授权

转载:转载请注明原文链接


Carpe Diem and Do what I like