字典 集合
字典:
所谓字典:
就是键值对数据 dict
dic = {'键':'值'}
用途:
存储数据 字典的查找快一些
python3.6 版本以上 字典默认是有序的, 怎么写的就怎么打印出来
但是理论上字典是无序的 3.5以下版本 测试
字典的键: 不可变数据类型 键不能重复,重复的话就会把值覆盖
字典的值: 可以随意
给大家补充一下:
不可哈希:就是可变的数据 可变的数据不能哈希
可哈希:不可变数据
字典的增:
第一种:
1 dic[11] = '小米' 2 print(dic)
第二种:
1 dic.setdefault(11,'乔狗')
注释:
1.先去字典中通过11这个键去查有没有值 就是None
2.如果有值 就不进行添加
3.如果是None, 就添加 返回的是添加的值
字典的删:
del dic # 删除整个字典
dic.clear() # 清空
del dic[1] # 通过键删除
print(dic.pop('25')) # pop 通过指定键删除 pop有返回值, 返回的是被删除的值
dic.popitem() # 随机删除 python3.6 删除最后一个 3.5 中随机删除
字典的改:
1 dic1 = {'33':'jj','44':'TT'} 2 dic2 = {'33':'gg','66':'pp'} 3 dic1.update(dic2) 4 dic2.update(dic1) 5 print(dic2)
更新 被更新的内容如果存在 要更新的内容中原值就会被覆盖
两个字典中,都没有一样的就是合并两个字典
1 dic2['33'] = 'tsp' 2 print(dic2)
字典中没有的时候才增,如果字典中这个键存在就做修改
字典的查:
1 dic2 = {'33':'gg','66':'pp'}
print(dic2[2]) # 通过键查找 如果键不存在就报错
print(dic2.get(2)) # 通过键查找 如果键不存在不会报错,返回None
print(dic2.setdefault('33')) # 不存在返回None
for i in dic2:
print(i)
for i in dic2:
print(dic2.get(i))
for i in dic2.keys():
print(i)
for i in dic2.values():
print(i)
for i in dic2.items():
print(i)
for i in dic2:
print(i,dic2[i])
解构:
分别定义变量值
1 a,b,c = 1,2,3 2 print(a) 3 print(b) 4 print(c)
两个数交换
1 a = 10 2 b = 20 3 a,b = b,a 4 print(b) # 10 5 print(a) # 20
取字典中的键值
1 for k,v in dic2.items(): # k,v = ('33','gg') 2 print(k) 3 print(v)
keys() # 获取所有的键 高仿列表
values() # 获取所有的值 高仿列表
item() # 获取键值 以元祖的形式显示
补充一下:
ret = dic2.get('乔狗','对不起,没有乔狗这条狗')
ret = dic2.pop('乔狗',‘不好意思,乔狗挂了')
这里解释一下,括号内的第一个值是所查找的值,第二个是返回的内容,没有添加的话,正常报错,添加后,显示所添加的内容
dic3 = dict.fromkeys([1,2,3,4,5,6,7,8,9,0],[1,2,3])
第一个参数是键 要是可迭代的对象
第二个参数是值, 值是无所谓 是因为创建的新字典的值用的都是一个 值是一个可变数据类型
字典的嵌套:
1 dic={'1':'乔狗','2':{'3':'乔二哈'}}
集合:
set 集合
用来存储数据
天然去重 无序 所以不能是用下标
1 lst = [1,2,3,4,12,3,4] 2 print(list(set(lst)))
拓展:
print(s1 & s2) # 俩个都有的
print(s1 | s2) # 两个合并
print(s1 - s2) # 不显示共有的
print(s1 ^ s2) # 显示不共有的
print(s1 < s2)
print(s1 > s2)
冻结集合:
s1 = frozenset(['乔狗', '乔二狗', '乔二哈', '乔二拆'])
print(s1)
冻结集合可以把可变类型变成不可变类型