1 #!coding: utf-8
2 menu={
3 '河北':{
4 '邯郸':{
5 '涉县':{
6 '偏店':{},
7 '井店':{}
8 },
9 '武安':{
10 '武安某镇1':{},
11 '武安某镇2':{}
12 }
13 },
14 '石家庄':{
15 '庄县1':{
16 '庄县1某镇1':{},
17 '庄县1某镇2':{}
18 },
19 '庄县2':{
20 '庄县2某镇1':{},
21 '庄县2某镇2':{}
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 current_layer = menu #动态变量
56 parrent_layers= []
57 while True:
58 for key in current_layer:
59 print key #1----将整个大的列表中键打印出,河北,北京和山西;2----打印出邯郸 石家庄 3----打印出涉县,武安 4----打印出,偏店,井店
60 choice = raw_input(">>>:").strip() 1----例如选择河北,choice=河北 2------邯郸 3------涉县 4------偏店
61 if choice in current_layer:
62 parrent_layers.append(current_layer) #1----parrent_layers现在是原来大的列表; 2---加上邯郸,石家庄 3---加上涉县 武安 4-----加上偏店,井店 -------关键处,一级一级返回;
63 current_layer = current_layer[choice] #1---这步current_layer将成为邯郸,石家庄;2---成为涉县,武安; 3----成为偏店,井店 4----无内容啦
64 elif choice == 'b': #定义的返回上一级;
65 if parrent_layers:
66 current_layer = parrent_layers.pop() #pop的用法很好,从末尾到首,一次pop掉;
67 elif choice == 'q':
68 break
69 else:
70 print "无此项"