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'