今天,已经系统的学习了一下文件相关操作!对三级菜单代码进行的优化:
菜单文件:以字典格式
menu.txt
{'第一层':{'第二层':{'第三层':['内容1','内容2','内容3']}},'第一层2':{'第二层2':{'第三层2':['内容12','内容22','内容32']}}}
增加代码在开头如下:
1 with open('menu.txt','r',encoding='utf-8') as f: 2 info=eval(f.readline())#打开并转成字符
如以便得以实现菜单存在文件中!
同时学习了集合的使用:
1 1 list_1=[1,2,3,4,6,3,2] 2 2 print('原始列表1:',list_1) 3 3 list_2=[3,46,6,2] 4 4 print('原始列表2:',list_2) 5 5 6 6 list_1=set(list_1)#去重为集合 7 7 print('去重列表1:',list_1) 8 8 9 9 print('合并列表1、2后:',list_1.union(list_2))#两个列表合并去重 10 10 print('列表1与列表2的交集:',list_1.intersection(list_2))#两个列表有交集的元素 11 11 print('列表1差集列表2:',list_1.difference(list_2))#列表1减去在列表2中有出现的元素 12 12 print('列表1是否是列表2的子集:',list_1.issubset(list_2))#返回真、假 13 13 print('列表1是否是列表2的父集:',list_1.issuperset(list_2))#返回真、假 14 14 print('列表1与列表2无交集:',list_1.isdisjoint(list_2))#无交集返回真、有交集返回假 15 15 print('列表1与列表2的对称差集:',list_1.symmetric_difference(list_2))#列表1对列表2的差集加上列表2对列表1的差集的集合,即去除两个列表中交集元素
字典的用法英文
1 #<字典> 2 #help(dict) 3 # 4 # 5 #字典一种key - value 的数据类型,使用就像我们上学用的字典,通过笔划、字母来查对应页的详细内容。 6 # 7 #字典的特性:dict是无序的,key必须是唯一的,所以天生去重。字典里没有下标 8 # 9 #key-value 10 #号码(下标):内容(可以重复) 11 # 12 13 print (' ') 14 print ('-------------创建字典的方法壹-------------------') 15 dict1 = {'num2': 'LongZe', 'num3': 'XiaoZe','num4':'Maliy','num5':'Jack','num6':'Hagan','num7':'Cahill'} 16 print(dict1) 17 18 print (' ') 19 print ('-------------创建字典的方法二-------------------') 20 dict2 = dict(鱼='让编程改变',书='读嘟嘟',笔='写写写') 21 print(dict2) 22 23 print (' ') 24 print ('-------------创建字典的方法三-------------------') 25 dict3 =dict((('f',70),('i',50),('s',111),('h',104))) 26 print(dict3) 27 28 29 print(' ') 30 print('------------------------字典增加-----------------') 31 dict1['yyy'] = '追加字典' 32 print(dict1) 33 34 print(' ') 35 print('------------------------字典修改-----------------') 36 dict2['鱼'] = '修改字典' 37 print(dict2) 38 39 print(' ') 40 print('------------------------字典删除方法壹-----------') 41 dict1.pop('num3') 42 print(dict1) 43 44 print(' ') 45 print('-----------py通用方法---字典删除方法二-----------') 46 del dict1['num4'] 47 print(dict1) 48 49 print(' ') 50 print('------------字典删除方法三随机删除一个---------') 51 dict1.popitem() 52 print(dict1) 53 54 55 print(' ') 56 print('------------------字典查找方法壹返回True---------') 57 'num2' in dict1 58 print('num2' in dict1) 59 60 print(' ') 61 print('---------------字典查找方法二----安全获取的方法--') 62 cz = dict1.get("num2") 63 print(cz) 64 65 print(' ') 66 print('------------------字典查找方法三-----------------') 67 dict1["num2"] 68 print(dict1["num2"]) 69 70 print ('如果一个key不存在,就报错,get不会,不存在只返回None') 71 72 print(' ') 73 print(' ')
1 #多级字典嵌套及操作 2 av_catalog = { 3 "欧美":{ 4 "www.youporn.com": ["很多免费的,世界最大的","质量一般"], 5 "www.pornhub.com": ["很多免费的,也很大","质量比yourporn高点"], 6 "letmedothis.com": ["多是自拍,高质量图片很多","资源不多,更新慢"], 7 "x-aryrtyrtt.com": ["质量很高,真的很高","全部收费,屌比请绕过"] 8 }, 9 "日韩":{ 10 "tokyo-hottuiyui": ["质量怎样不清楚","听说是收费的"] 11 }, 12 "大陆":{ 13 "1024hkhkhkhkhkh": ["全部免费,真好,好人一生平安","服务器在国外,慢"] 14 } 15 } 16 17 av_catalog["大陆"]["1024"][1] += ",可以用爬虫爬下来" 18 19 print(av_catalog["大陆"]["1024"]) 20 #ouput 21 ['全部免费,真好,好人一生平安', '服务器在国外,慢,可以用爬虫爬下来']
1 #以下代码复制到python(3.6.2rc2)下 按F5 可以正常执行,对比学习。QQ:124111294欢迎 2 #字典的其它姿势 3 4 #values 打印不包括keys所有的值 5 info.values() 6 dict_values(['LongZe Luola', 'XiaoZe Maliya']) 7 8 #keys 打印所有keys的值 9 info.keys() 10 dict_keys(['stu1102', 'stu1103']) 11 12 #setdefault 创建一个新的值,寻找某值,寻找不到创建 13 info.setdefault("stu1106","Alex") 14 'Alex' 15 info 16 {'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya', 'stu1106': 'Alex'} 17 info.setdefault("stu1102","龙泽萝拉") 18 'LongZe Luola' 19 info 20 {'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya', 'stu1106': 'Alex'} 21 22 #update 合并两字典,交叉就覆盖,没有就添加。 23 info 24 {'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya', 'stu1106': 'Alex'} 25 b = {1:2,3:4, "stu1102":"龙泽萝拉"} 26 info.update(b) 27 info 28 {'stu1102': '龙泽萝拉', 1: 2, 3: 4, 'stu1103': 'XiaoZe Maliya', 'stu1106': 'Alex'} 29 30 #items 字典转成列表 31 info.items() 32 dict_items([('stu1102', '龙泽萝拉'), (1, 2), (3, 4), ('stu1103', 'XiaoZe Maliya'), ('stu1106', 'Alex')]) 33 34 #通过一个列表生成默认dict,有个没办法解释的坑,少用吧这个 35 #初始一个新的字典,每个KEY用同一个值<值等于浅COPY,类似快捷方式> 36 dict.fromkeys([1,2,3],'testd') 37 {1: 'testd', 2: 'testd', 3: 'testd'}
1 #以下代码复制到python(3.6.2rc2)下 按F5 可以正常执行,对比学习。QQ:124111294欢迎 2 #循环dict<字典> 3 4 #方法1 #通过key寻找打印 5 for key in info: 6 print(key,info[key]) 7 8 #方法2 #把字典转成列表,然后打印列表里的('k','v') 9 for k,v in info.items(): #会先把dict转成list,数据大时莫用 10 print(k,v)