3.10总结
01dict
-
增、 改
字典[key] = 值 - 当key存在的时候就是修改指定key对应的值,当key不存在的时候添加键值对
-
删
- 2.1 del 字典[key] - 删除字典中指定key对应的键值对
- 2.2 字典.pop(key) - 取出字典中指定key对应的值
-
字典相关操作
-
3.1 字典不支持+、* 和 比较大小,只支持比较是否相等的运算
-
3.2 in 和 not in - 判断字典中是否存在指定的key
-
3.3 dict 、len
dict(数据) - 将数据转换成字典
- a. 数据必须是序列
- b. 序列中元素必须是小序列,而且小序列有且只有两个元素,第一个元素必须是不可变的
-
-
字典推导式
{表达式1:表达式2 for 变量 in 序列}
{表达式1:表达式2 for 变量 in 序列 if 条件语句}
dict(表达式 for x in 序列) - 表达式必须是有且只有两个元素的序列,第一个元素必须是不可变的
-
字典相关方法
-
-
字典.clear( ) - 清空字典
-
字典.copy( ) - 复制字典产生一个一模一样的新字典
-
(了解) dict.fromkeys(序列) - 创建一个字典,将序列中所有的元素作为字典key,值默认都是None
-
values、keys、items
字典.values( ) - 获取字典中所有的值; 返回的不是列表另是一种序列
字典.keys( ) - 获取字典中所有的键; 返回的不是列表另是一种序列
字典.items( ) - 获取字典中键值对; 返回的时候序列,序列中的元素是每个键值对对应的元组
-
字典.setdefault(key, value) - 在字典中添加键值对(不会在key存在的时候进行修改操作)
-
字典。update(序列) - 将序列中所有的元素作为键值对添加到字典中。序列必须是可以转换成字典的序列
字典1.update(字典2) - 将字典2的键值对全部添加到字典1中
-
-
02set
-
什么是集合(set)
集合是容器型数据类型;将{ }作为容器的标志,多个元素之间用逗号隔开:{元素1,元素2,元素3,…}
集合是可变的;集合是无序的
元素: 必须是不可变的数据;元素是唯一的
- 空集合:{ }不是空集合,是字典
- 集合是无序的
- 集合的元素必须是不可变的类型的数据
- 集合的元素是唯一的
- 集合自带去重功能,但是只能去元素是不可变的序列的重
-
增删改查
-
-
查: 集合只能遍历
集合.add(元素) - 在集合中添加指定元素
-
增
集合.add(元素) - 在集合中添加指定元素
集合.update(元素) - 将序列中的元素全部添加到集合中
-
删
集合.remove(元素) - 删除指定元素,如果元素不存在就报错
集合.discard(元素) - 删除指定元素,如果元素不存在不报错
-
改 - 不能直接修改某个元素,只能先删除再添加
-
-
-
数学集合运算:交集( & )、并集( | )、差集( - )、对称差集( ^ )、子集( >= )和真子集( > )
-
-
交集( & )
集合1 & 集合2 - 获取两个集合公共的部分
-
并集( | )
-
差集( - )
集合1 - 集合2 - 获取在集合1中但是不在集合2中的所有元素
-
对称差集( ^ )
集合1 ^ 集合2 - 获取只在集合1和只在集合2中的所有的元素
-
子集和真子集
集合 1 >= 集合2 - 判断集合2 是否是集合1的子集
集合 1 < 集合2 - 判断集合2 是否是集合1的真子集
-
-
-
集合相关操作
-
- in 和 not in
- max 、 min、 sorted、sum、set、len
-
3.10作业
用三个集合表示三门学科的选课学生姓名(一个学生可以同时选多门课)
subject1 = {'小红','小白','小黑','小明'}
subject2 = {'小黑','小蓝','小白','小紫'}
subject3 = {'小白','小花','小蓝','小黑','小紫'}
a. 求选课学生总共有多少人
print(len(subject1 | subject2 | subject3))
b. 求只选了第一个学科的人的数量和对应的名字
s1= subject1 - subject2 - subject3
print(len(s1),s1)
c. 求只选了一门学科的学生的数量和对应的名字
s1 = subject1 - subject2 - subject3
s2 = subject2 - subject3 - subject1
s3 = subject3 - subject1 - subject2
new_sub1 = s1| s2 | s3
print(len(new_sub1),new_sub1)
d. 求只选了两门学科的学生的数量和对应的名字
s1 = subject1 & subject2 - subject3
s2 = subject1 & subject3 - subject2
s3 = subject2 & subject3 - subject1
new_sub2 = s1 | s2 | s3
print(len(new_sub2),new_sub2)
e. 求选了三门学生的学生的数量和对应的名字
new_sub3 = subject1 & subject2 & subject3
print(len(new_sub3),new_sub3)