一、字典
字典(dict) 键值对数据
字典是另一种可变容器模型,且可存储任意类型对象。
字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中 ,格式如下所示:
dic = {'键':'值','键':'值'}
dic = {key0:value0,key1:value1}
键: 不可变数据,不能重复,如:整型(数字)、字符串、元祖、布尔值
值: 随意
字典的主要作用是存储数据,字典的查找快一些;不可哈希的,就是可变的数据,不可变的数据能哈希
# python3.6 版本以上:字典默认是有序的, 怎么写的顺序就怎么打印出来,理论上字典是无序的
键: 不可变数据,不能重复,如:整型(数字)、字符串、元祖、布尔值
值: 随意
字典的主要作用是存储数据,字典的查找快一些
不可哈希的,就是可变的数据,不可变的数据能哈希
# python3.6 版本以上:字典默认是有序的, 怎么写的顺序就怎么打印出来,理论上字典是无序的
增:
dic[11] = '小米' #下标新增
dic.setdefault(11,'华为') # 如果有返回值 就不进行添加;如果返回None, 就添加 返回的是添加的值
dict.fromkeys('可迭代对象') # 坑 不写值默认是None 写值得时候如果是可变数据类型就需要小心了
删:
del dic #直接删除字典
del dic[1] #通过键值删除
#不成立,必须跟键值dic.pop()
dic.pop("list",'找不到时的提示语句') 通过键删除返回值
# 没有# dict.remove
dic.clear() #清除字典
dic.popitem() #python3默认删除最后一个,python2随机删除
改:
dic.update(dic1) #有键的就更新,没键的就新增,在括号里级别高于update前面的
dict['键'] = '值' #只有在字典中才是修改 , 没有在字典中就是增
查:
print(dic[2]) # 通过键查找 如果键不存在就报错
print(dic.get(2)) # 通过键查找 如果键不存在不会报错,返回None
print(dic.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]) #直接取到键、值
print(dic2.keys()) # 高仿列表,所有的键 dict_keys(['33', '66']) 不能使用下标
print(dic2.values()) # 高仿列表,所有的值 dict_values(['gg', 'pp']) 不能使用下标
print(dic2.items()) # 所以的键值 元祖形式
解构:
a,b,c = 1,2,3 # 1,2,3 True,False,True '456' [7,8,9] (7,8,9) {'1':8,'2':9,'3':0}
print(a)
print(b)
print(c)
面试题:
a = 10
b = 20
a,b = b,a # 10000%
print(b) # 10
print(a) # 20
for k,v in dic2.items(): # k,v = ('33','gg')
print(k)
print(v)
字典的嵌套
查找思想和列表一样,只要是{开头 }结尾的就是一体
二、集合
集合(set)是一个无序的不重复元素序列。
可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。
创建格式:
se = {value0,value1,value2...}
或者
set(value)
集合 存储数据,天然去重,内容要求不可变数据 无序 不能是用下标
增:
se.add('内容')
se.update('可迭代对象')
删:
se.remove('内容')
se.pop() 默认删除第一个
del se 删除整个集合
改:
集合就是先删后增
查:
for 循环
其他操作:
交集 &
并集 |
差集 -
反差集 ^
子集 <
超级 >
冻结集合 : 把可变的集合变成了不可变得集合 不常用