python第五天 字典

今天,已经系统的学习了一下文件相关操作!对三级菜单代码进行的优化:

菜单文件:以字典格式

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)
循环dict<字典>

 

posted @ 2017-05-07 12:26  莫柔落切  阅读(454)  评论(0编辑  收藏  举报