数据
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])