字典 集合

字典:

所谓字典:

就是键值对数据 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)

冻结集合可以把可变类型变成不可变类型

原文地址:https://www.cnblogs.com/53Dawns/p/10217204.html