數據
menu = {
'北京': {
'海淀': {
'五道口': {
'soho': {},
'網易': {},
'google': {}
},
'中關村': {
'愛奇藝': {},
'汽車之家': {},
'youku': {},
},
'上地': {
'百度': {},
},
},
'昌平': {
'沙河': {
'網易': {},
'北航': {},
},
'天通苑': {},
'回龍觀': {},
},
'朝陽': {},
'東城': {},
},
'上海': {
'閔行': {
"人民廣場": {
'炸雞店': {}
}
},
'閘北': {
'火車戰': {
'攜程': {}
}
},
'浦東': {},
},
'山東': {},
}
1.遞歸實現
def tree_m(menu):
while True:
for key in menu:
print(key)
inp = input("請輸入<B返回上一層,Q退出>:")
if inp.upper() == "Q":
return "Q"
if inp.upper() == "B":
return "B"
elif menu.get(inp):
ret = tree_m(menu[inp])
if ret == "Q":
return "Q"
tree_m(menu)
2.堆棧
lst = [menu]
while lst:
for key in lst[-1]:
print(key)
inp = input("請輸入<B返回上一層,Q退出>:")
if inp.upper() == "Q":
break
elif inp.upper() == "B":
lst.pop()
elif lst[-1].get(inp):
lst.append(lst[-1][inp])