这个馒头有点小

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

一、字典(dictionary)

1)字典的定义

2)字典的查找

3)多级字典联动

 

 

 4)字典循环

5)练习代码

 1 #创建一个新的字典 dict{key:value}
 2 #ps: 在字典中取值会比列表取值快
 3 dic = {
 4     "王二蛋":["",22,"Oldboy"],
 5     "铁柱":["",25,"Tencent"],
 6     "小花":["",24,"Alibaba"],
 7     "小明":["",20,"Baidu"],
 8     "小红":["",21,"Souhu"]
 9 }
10 #取值
11 print("取值: ",dic["铁柱"][0])
12 print("取值2:", dic.get("铁柱")[0])
13 #改值
14 dic["铁柱"][1] = 26
15 print("改值: ",dic["铁柱"])
16 #删除
17 ##指定删
18 # del dic["小红"]
19 # dic.pop("小红")
20 ##随机删
21 # dic.popitem()
22 # print(dic)
23 #字典转列表
24 print("字典转列表: ",dic.items())
25 #清空字典
26 # dic.clear()
27 # print(dic)
28 #复制一个字典出来,不过,修改字典里面的列表的元素值,其它字典也跟着改变
29 # dic2 = dic.copy()
30 # print(dic2)
31 # dic2["王二蛋"][0] = "女"
32 # print(dic)
33 #生成一个字典,默认每个k值都为None,也可以通过第二个参数为它们统一赋值
34 print(dic.fromkeys(["A","B","C"],"1"))
35 #把字典里的k提取出来组成一个新的列表
36 print(dic.keys())
37 #更新一个k的v值,如果k不存在,则添加,存在则修改
38 dic.setdefault("王小花",[22,"","Wangyi"])
39 print(dic)
40 #合并字典,生成一个新的字典,如果添加的字典中有原字典的k,那么原字典k的值会被替换成添加字典中相同k的值
41 dic2 = {"铁柱":[30]}
42 dic.update(dic2)
43 print(dic)
44 #把字典中所有v的值都提取出来,组成一个新的列表
45 print(dic.values())
46 #-------------------------------- 分割线 ------------------------------------------------
47 print("循环".center(100,"-"))
48 #循环
49 for key in dic:
50     print(key,dic[key])
dictionary

 

 1 #字典练习题
 2 dic = {
 3     "k1":"v1",
 4     "k2":"v2",
 5     "k3":"v3"
 6 }
 7 #循环遍历所有的key
 8 print(" 遍历key ".center(50,"-"))
 9 for k in dic:
10     print(k)
11 print(" 遍历结束 ".center(50,"-"))
12 #循环遍历所有value
13 print(" 遍历value ".center(50,"-"))
14 for k in dic:
15     print(dic[k])
16 print(" 遍历结束 ".center(50,"-"))
17 #遍历所有key和value
18 print(" 遍历key和value ".center(50,"-"))
19 for k in dic:
20     print(k,":",dic[k])
21 print(" 遍历结束 ".center(50,"-"))
22 #添加键值对
23 print(" 添加键值对 ".center(50,"-"))
24 dic.setdefault("k4","v4")
25 print(dic)
26 print(" 键值对添加结束 ".center(50,"-"))
27 #删除指定键值对
28 print(" 删除键值对 ".center(50,"-"))
29 dic.pop("k1")
30 print(dic)
31 print(" 删除结束 ".center(50,"-"))
32 #删除字典指定键,没有改键值则返回None
33 print(" 删除字典指定键,没有改键值则返回None ".center(50,"-"))
34 if dic.get("k5") == None:
35     print("None")
36 else:
37     dic.pop("k5")
38 print(" end ".center(50,"-"))
39 #打印键k2对应的value
40 print(" 打印value ".center(50,"-"))
41 print(dic["k2"])
42 print(" End ".center(50,"-"))
43 #获取k6对应的value,如果key不存在,则返回None
44 print(" 获取k6对应的value,如果key不存在,则返回None ".center(50,"-"))
45 if dic.get("k6") == None:
46     print("None")
47 else:
48     print(dic["k6"])
49 print(" End ".center(50,"-"))
50 print( " dic 的 update 操作 ".center(50,"-"))
51 # dic 的 update
52 ##下面是一个字典dic2,用一行代码使其变成 {'a': 'b', 'k4': 'v4', 'k2': 'v2', 'k3': 'v3'}
53 dic2 = {"k2":"v111","a":"b"}
54 dic2.update(dic)
55 print(dic2)
56 print(" End ".center(50,"-"))
57 #
58 lis = [["k",["qwe",20,{"k1":["tt",3,"1"]},89],"ab"]]
59 #把tt变大写
60 ##第一种方法
61 # lis[0][1][2]["k1"][0] = "TT"
62 ##第二种方法
63 dic = {"k1":["TT",3,"1"]}
64 lis[0][1][2].update(dic)
65 print(lis)
66 #把3变成字符串"100"
67 lis[0][1][2]["k1"][1] = "100"
68 print(lis)
69 #把"1"变成101
70 lis[0][1][2]["k1"][2] = 101
71 print(lis)
72 #将提供的列表li中的奇数索引添加到k1键对应的列表值
73 li = [1,2,3,"a","b",4,"c"]
74 temp_lis = []#创建临时空列表,用来存放奇数索引的元素
75 dic = {}#动态字典
76 for i,index in enumerate(li):#遍历列表,提取奇数元素
77     if i % 2 != 0: #取余数,奇数除以2的余数不等于0
78         temp_lis.append(index) #往临时列表中添加元素
79 #print(temp_lis)
80 dic2 = {"k1":temp_lis}
81 dic.update(dic2) #更新dic字典
82 print("update",dic)
dic_exercise

 

二、集合

1)集合的定义

2)交集和差集

3)并集

 

 4)对称差集

5)练习代码

 1 #
 2 #ps: 集合是无序的
 3 set_val = {}
 4 print(type(set_val))# <class 'dict'>
 5 
 6 set_val = {1}
 7 print(type(set_val))# <class 'set'>
 8 #去重
 9 set_val = {1,2,3,5,2,2,10}
10 print(set(set_val)) # {3, 1, 10, 2, 5}
11 #列表去重,用set()函数,去重后会把数字按从小到大排序
12 list_val = [2,1,3,4,4,5,6,10,1,4,3]
13 print(set(list_val))
14 #删除
15 set_val = {1,1,3,4,5,6,7,9,9}
16 set_val.remove(1) #删除指定数字,没有找到会报错
17 print("remove: ",set_val)
18 set_val.discard(3)#删除指定数字,没有找到不会报错,找到直接删
19 print("discard: ",set_val)
20 #添加
21 ##添加一个
22 set_val.add(11)
23 print("add: ",set_val)
24 ##添加多个
25 set_val.update([11,12,13,14,15,16])
26 print("update: ",set_val)
27 #清空
28 set_val.clear()
29 print("clear: ",set_val)
30 #交集
31 set_iphone7 = {"Alex","rain","jack","old_driver"}
32 set_iphone8 = {"Alex","jack","shanshan","old_boy"}
33 print("交集: ",set_iphone7.intersection(set_iphone8))
34 print("交集: ",set_iphone7 & set_iphone8)
35 #差集
36 ##只买iPhone7的
37 print("只买iPhone7: ",set_iphone7.difference(set_iphone8))
38 print("只买iPhone7: ",set_iphone7 - set_iphone8)
39 ##只买iPhone8的
40 print("只买iPhone8: ",set_iphone8.difference(set_iphone7))
41 print("只买iPhone8: ",set_iphone8 - set_iphone7)
42 #并集
43 print("并集: ",set_iphone7.union(set_iphone8))
44 print("并集: ",set_iphone7 | set_iphone8)
45 #对称差集
46 ##判断两个集合是否不相交,False表示相交
47 print(set_iphone7.isdisjoint(set_iphone8))
48 ##判断该合集是否是另一个合集的子集
49 print(set_iphone7.issubset(set_iphone8))
50 print(set_iphone7 <= set_iphone8)
51 ##判断该合集是否是另一个合集的超集
52 print(set_iphone7.issuperset(set_iphone8))
53 print(set_iphone7 >= set_iphone8)
set

 

三、十六进制

PS:

  1.oct()转八进制(以0开头)

  2.hex()转十六进制(以0x开头)

  3.id()查看内存地址

       4.一个字节占8个比特(bit),一个十六进制数占4个二进制位,8个二进制位表示一个字节,那么一个字节表示两个十六进制位

四、编码(参考:http://www.cnblogs.com/alex3714/articles/7550940.html)

 

posted on 2017-12-28 23:10  这个馒头有点小  阅读(226)  评论(0)    收藏  举报