1 menu = {
2 '北京':{
3 '海淀':{
4 '五道口':{
5 'soho':{},
6 '网易':{},
7 'google':{}
8 },
9 '中关村':{
10 '爱奇艺':{},
11 '汽车之家':{},
12 'youku':{},
13 },
14 '上地':{
15 '百度':{},
16 },
17 },
18 '昌平':{
19 '沙河':{
20 '老男孩':{},
21 '北航':{},
22 },
23 '天通苑':{},
24 '回龙观':{},
25 },
26 '朝阳':{},
27 '东城':{},
28 },
29 '上海':{
30 '闵行':{
31 "人民广场":{
32 '炸鸡店':{}
33 }
34 },
35 '闸北':{
36 '火车战':{
37 '携程':{}
38 }
39 },
40 '浦东':{},
41 },
42 '湖北':{
43 '武汉':{
44 '光谷':{},
45 '汉中街':{},
46 },
47 '黄石':{
48 '黄石港':{},
49 '上窑':{},
50 },
51 '大冶':{
52 '商城':{},
53 '矿头':{},
54 },
55 '黄冈':{
56 '将军县':{},
57 },
58 },
59 }
60
61 current_level = menu #记录当前循环的层
62 last_levels = [] #依次把目前进入的层 存入列表
63
64 while True:
65 for k in current_level: #循环当前层
66 print(k)
67 choice = input("请输入地址>>: ").strip()
68 if choice == 'b':
69 if len(last_levels) == 0 :break #列表没有层记录 就是顶点层 则退出程序
70 current_level = last_levels[-1] #当输入 b ,退出时 取出上一层
71 last_levels.pop() #当返回上一层时 删除记录层级的
72 elif choice == 'q': #当输入 q ,退出程序
73 exit()
74 if choice not in current_level:continue
75 last_levels.append(current_level) #当前层加入 记录列表
76 current_level = current_level[choice] #把用户输入的层 加入到当前层 然后循环