menu = { ‘北京‘:{ ‘朝阳‘:{ ‘国贸‘:{ ‘CICC‘: {}, ‘HP‘: {}, ‘渣打银行‘: {}, ‘CCTV‘: {}, }, ‘望京‘:{ ‘陌陌‘: {}, ‘奔驰‘: {}, ‘360‘: {}, }, ‘三里屯‘:{ ‘优衣库‘:{}, ‘apple‘:{}, } }, ‘昌平‘:{ ‘沙河‘:{ ‘老男孩‘:{}, ‘阿泰包子‘:{}, }, ‘天通苑‘:{ ‘链家‘:{}, ‘我爱我家‘:{}, }, ‘回龙观‘:{} }, ‘海淀‘:{ ‘五道口‘:{ ‘谷歌‘:{}, ‘网易‘:{}, ‘Sohu‘:{}, ‘Sogo‘:{}, ‘快手‘:{}, }, ‘中关村‘:{ ‘youku‘:{}, ‘Iqiyi‘:{}, ‘汽车之家‘:{}, ‘新东方‘:{}, ‘QQ‘:{}, }, } }, ‘上海‘:{ ‘浦东‘:{ ‘陆家嘴‘:{ ‘CICC‘:{}, ‘高盛‘:{}, ‘摩根‘:{}, }, ‘外滩‘:{}, }, ‘闵行‘:{}, ‘静安‘:{}, }, ‘山东‘:{ ‘济南‘:{ }, ‘德州‘:{ ‘乐陵‘:{ }, ‘平原‘:{}, ‘丁坞镇‘:{}, ‘城区‘:{}, }, ‘青岛‘:{ }, } } current_layer = menu #实现动态循环 parent_layers = [] #保存所有父级,最后一个元素永远都是父级 while True: for key in current_layer: print(key) choice = input(‘>>>:‘).strip() #移除字符串头尾指定的字符(默认为空格) if len(choice) == 0:continue if choice in current_layer: parent_layers.append(current_layer) #在进入下一层之前,把当前层 #(也就是下一层的父级)追加到列表中,下一次loop,当用户选择b, # 就可以直接取列表的最后一个值出来 current_layer = current_layer[choice] #改成子层 elif choice == ‘b‘: if parent_layers: #空列表False,非空列表为True current_layer = parent_layers.pop() #取出列表的最后一个值,因为就是当前层的父级 else: ‘invalid input‘