Python学习笔记3:三级菜单(字典)

  1 import os,sys
  2 map = {
  3         '湖北':{
  4                 '武汉':{'江岸区':[('长江北岸','武汉市东北部,'),('70.25平方千米',),(430000,),{'populace':'100W'}],
  5                       '江汉区':[('武汉市汉口地区中部',),('33.43平方公里',),(430000,),{'populace':'83W'}],
  6                       '硚口区':[('武汉市主城区西北部',),('41.46平方公里',),(430000,),{'populace':'64W'}],
  7                       '汉阳区':[('武汉市西南部',),('108平方公里',),(430050,),{'populace':'91W'}],
  8                       '武昌区':[('武汉市东南部',),('107.76平方千米',),(430061,),{'populace':'106W'}],
  9                       '青山区':[('武汉市中游南岸',),('80.47平方公里',),(430080,),{'populace':'54W'}],
 10                       '洪山区':[('武汉市东南部',),('480平方公里',),(430070,),{'populace':'126W'}],
 11                       '江夏区':[('武汉市南部',),('2018平方公里',),(430200,),{'populace':'82W'}]},
 12                 '黄石':{'黄石港区':[('位于鄂东南',),('42.4平方公里',),(43500,),{'populace':'22W'}],
 13                       '西塞山区':[('长江中游'),('49.95平方公里'),(435000),{'populace':'26W'}],
 14                       '下陆区':[('黄石市北部',),('75平方公里',),(435005,),{'populace':'11W'}],
 15                       '铁山区':[('黄石市西部',),('28.7平方公里',),(435006,),{'populace':'7W'}],
 16                       '阳新县':[('长江以南','幕阜山脉北麓'),('2780平方千米',),(435200,),{'populace':'109W'}],
 17                       '大冶市':[('长江以南','幕阜山脉以北'),('1566.3平方公里',),(435100,),{'populace':'98W'}]},
 18                 '十堰':{'茅箭区':[('十堰市中部',),('540平方公里',),(442000,),{'populace':'27W'}],
 19                       '张湾区':[('十堰市中部',),('657平方公里',),(442000,),{'populace':'40W'}],
 20                       '郧阳区':[('十堰市北部、西部',),('3863平方公里',),(442500,),{'populace':'64W'}],
 21                       '郧西县':[('十堰市西北部',),('3509平方千米',),(442600,),{'populace':'50W'}],
 22                       '竹山县':[('十堰市西南','竹溪以东,房县以西'),('3586平方千米',),(442200,),{'populace':'51W'}],
 23                       '竹溪县':[('十堰市西南',),('3279平方公里',),(442300,),{'populace':'36W'}],
 24                       '房县':[('十堰市南部',),('5115平方公里',),(442100,),{'populace':'49W'}],
 25                       '丹江口市':[('中国中部','十堰 襄阳的中间','汉江中上游'),('3121平方千米',),(442700,),{'populace':'98W'}]},
 26                 '随州':{'曾都区':[('鄂北',),('1316平方公里',),(441300,),{'populace':'82W'}],
 27                       '随县':[('湖北省北部',),('5673平方公里',),(431500,),{'populace':'107W'}],
 28                       '广水市':[('武汉市北部','随州市东部'),('2675平方公里',),(432700,),{'populace':'104W'}]},
 29                 '荆州':{'沙市区':[('江汉平原腹地','荆州地区东北'),('492平方千米',),(434000,),{'populace':'61W'}],
 30                       '荆州区':[('湖北省中南部',),('1045平方公里'),(434000),{'populace':'60W'}],
 31                       '江陵县':[('湖北省中南部',),('1032平方千米',),(434100,),{'populace':'40W'}],
 32                       '监利县':[('湖北省南部','长江北岸'),('3118平方千米',),(433300,),{'populace':'155W'}],
 33                       '公安县':[('湖北省中南部','长江中游荆江南岸'),('2258平方公里',),(434300,),{'populace':'102W'}],
 34                       '松滋市':[('湖北省西南部',),('2235平方公里'),(434200,),{'populace':'85W'}],
 35                       '石首市':[('湖北省南部','长江中游岸边'),('1427平方千米',),(434400,),{'populace':'98W'}],
 36                       '洪湖市':[('长江中下游','江汉平原东南部'),('2519平方公里',),(433200,),{'populace':'93W'}]}
 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               '广元市':{'朝天区':'这个人很懒,什么都不想写','青川县':'这个人很懒,什么都不想写',
 62                      '剑阁县':'这个人很懒,什么都不想写'}
 63               },
 64 }
 65 
 66 flag = True
 67 while flag is True:
 68         for key in map:
 69                 print(key)
 70         core = input("Please input province , or 'q' exit:")
 71         if core in map:
 72                 flag = False
 73                 while flag is not True:
 74                         for key_1 in map[core].keys():
 75                                 print(key_1)
 76                         core_1 = input("Please input city or 'b' back or 'q' exit:")
 77                         if core_1 == 'b':
 78                                 print('返回上一级')
 79                                 flag = True
 80                                 break
 81                         elif core_1 == 'q':
 82                                 sys.exit('您已退出系统')
 83                         elif core_1 in map[core]:
 84                                 flag = True
 85                                 while flag is  True:
 86                                         for key_2 in map[core][core_1]:
 87                                                 print(key_2)
 88                                         core_2 = input("Plesase input town or 'b' back or 'q' quit:")
 89                                         if core_2 in map[core][core_1]:
 90                                                 print(map[core][core_1][core_2])
 91                                                 exit(0)
 92                                         elif core_2 == 'b':
 93                                                 print('返回上层目录')
 94                                                 flag = False
 95                                                 break
 96                                         elif core_2 == 'q':
 97                                                 sys.exit('quit')
 98                                         else:
 99                                                 print('输入不符合规范,请重新输入')
100                                                 continue
101                         else:
102                                 print('您的输入不符合规范,请重新输入')
103                                 continue
104         elif core == 'q':
105                 sys.exit('exit0')
106         else:
107                 print('您的输入不符合规范,请重新输入。')
108                 continue

######

1.判断元素是否在列表,元祖,字典等里;使用  VLAUE  in LIST(DIR).

 1 name = {'a':1,'b':2,'c':3,'d':4}
 2 print('a' in name)
 3 name_1 = ['A','B','C','D']
 4 print('B' in name_1)
 5 name_2 = ('A','B','C','D')
 6 print('D' in name_2)
 7 
 8 
 9 》》》》
10 True
11 True
12 True
View Code

2.字典使用键-值(key-value)存储,具有极快的查找速度。字典是无序的,字典中的元素通过键来存取,故字典中的键是唯一的不可以修改;通过key计算位置的算法称为哈希算法(Hash)

键:不可变类型;整形,字符串,元祖等。 值:可变和不可变。

3.列表和元祖有序的集合,通过索引可以存取。列表可以修改,元祖中的元素不可以修改;索引是从0开始。

4.多次对一个key放入value,后面的值会把前面的值冲掉

5.避免key不存在的错误,有两种办法,一是通过in判断key是否存在;二是通过dict提供的get()方法,如果key不存在,可以返回None,或者自己指定的value:

1 name = {'a':1,'b':2,'c':3,'d':4}
2 print(name.get('e'))
3 print(name.get('e',9))
4 
5 》》》
6 None
7 9
View Code

6.和list比较,dict有以下几个特点:查找和插入的速度极快,不会随着key的增加而变慢;需要占用大量的内存,内存浪费多。

而list相反:查找和插入的时间随着元素的增加而增加;占用空间小,浪费内存很少。

补充:

7.集合set:和dict类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在set中,没有重复的key。无序的。

 1 set_1 = {'a','b','c'}
 2 print(set_1)
 3 list = ['A','B','C','D']
 4 print(list)
 5 set_2 = set(list)
 6 print(set_2)
 7 
 8 》》》
 9 {'b', 'a', 'c'}
10 ['A', 'B', 'C', 'D']
11 {'D', 'C', 'A', 'B'}
View Code

猜你喜欢

转载自www.cnblogs.com/win1387key/p/9069452.html