menu = {
‘北京‘:{
‘海淀‘:{
‘五道口‘:{
‘soho‘:{},
‘网易‘:{},
‘google‘:{}
},
‘中关村‘:{
‘爱奇艺‘:{},
‘汽车之家‘:{},
‘youku‘:{}
},
‘上地‘:{
‘百度‘:{}
},
},
‘昌平‘:{
‘沙河‘:{
‘老男孩‘:{},
‘北航‘:{},
},
‘天通苑‘:{},
‘回龙观‘:{},
},
‘朝阳‘:{},
‘东城‘:{},
},
‘上海‘:{
‘闵行‘:{
‘人民广场‘:{
‘炸鸡店‘:{}
}
},
‘闸北‘:{
‘火车站‘:{
‘携程‘:{}
}
},
‘浦东‘:{}
},
‘上海‘:{}
}
def threeLM(dic):
while True:
for k in dic:print(k)
key = input(‘input>>‘).strip()
if key == ‘b‘ or key == ‘q‘:return key
elif key in dic.keys() and dic[key]:
ret = threeLM(dic[key])
if ret == ‘q‘:return ‘q‘
elif (not dic.get(key)) or (not dic[key]):
continue
threeLM(menu)
##用堆栈写
l = [menu]
while l:
for key in l[-1]:print(key)
k = input(‘input>>‘).strip()
if key in l[-1].key() and l[-1][key]:
l.append(l[-1][key])
elif k == ‘b‘:
l.pop()
elif k == ‘q‘:
break
else:continue
原文:https://www.cnblogs.com/eternity-twinkle/p/10545276.html