字典的增和改
1.字典[键] = 值
1.1如果键存在时修改键对应的值,不存在则添加键值对
1 | cat = {'name':'加菲','age':3,'color':'白色'} |
setdefault 方法实例
练习:在students中没有分数的学生中添加分数对应的键值对,分数值为零
1 | students = [ |
字典的删除 - 删除键值对
1.1 del 方法 - del 字典[键]
1.1.1 如果不给键,会删除整个字典
1.1.2 删除指定键对应的键值对,键不存在会报错
1 | cat = {'name':'加菲','age':3,'color':'白色'} |
1.2 pop 方法 - 字典.pop(键)
1.2.1 - 取出字典指定键对应的值
1.3.1 - 如果键不存在会报错
1 | cat = {'name':'加菲','age':3,'color':'白色'} |
字典的相关操作
1.1 字典不支持 +,*,也不支持比较大小的运算符,支持 == ,!=
1.2 in 或 not in 判断字典中是否存在指定键
1.3 键 in / not in 字典
1 | dict1 = {'a':10,'b':20,'c':30} |
1.4 相关函数
1.4.1 len 获取长度
1.4.2 dict(数据) -
1)数据本身是一个序列,
2)序列中的元素是有且只有两个元素的小序列
3)小序列的第一个元素是不可以改变的数据
1 | data = [('a',10),('b',20)] |
1.5 字典转换成列表和元组
1 | dict2 = {'a':10,'b':20,'c':30} |
1.6 字典相关方法
1.6.1 clear - 清空
1)字典.clear()
1 | dict2 = {'a':10,'b':20,'c':30} |
1.6.2 copy - 复制产生一个一样的新字典
1)字典.copy()
1 | dict2 = {'a':10,'b':20,'c':30} |
1.6.3 items,keys,values
1)字典.keys() - - 获取字典键
1 | dict2 = {'a':10,'b':20,'c':30} |
2)字典.values() - 获取字典值
1 | dict2 = {'a':10,'b':20,'c':30} |
3)字典.items() - 取出元素
1 | dict2 = {'a':10,'b':20,'c':30} |
1.6.4 update
1)字典.update(序列)
2)将序列中的所有元素都添加到字典中(如果存在则覆盖)
3)序列必须是字典或者是能转换成字典的序列
1 | dict2 = {'a':10,'b':20,'c':30} |
1.7 字典的推导式
1.7.1 {键的表达式:值的表达式 for 变量 in 序列}
练习1. 通过字典的推导式交换字典的键和值
1 | dict1 = {'a':10,'b':20} |
1.7.2 {键的表达式:值的表达式 for 变量 in 序列 if 条件语句}
集合 - set
1 集合是容器型数据 - 将 {}作为容器的标志
1.1 多个元素用逗号隔开
1.2 集合是可变的,并且集合是无序的
1.3 集合的元素是不可变的数据,且是唯一的
2.1 空集合
1 | set1 = set() |
2.2 集合无序
1 | print({1,2,3}=={3,1,2}) |
2.3 元素必须是不可变的数据
1 | set2 = {1,'abc',(2,3)} |
2.4 元素是唯一的
1 | set4 = {1,2,3,2,4,1,5,4,1} |
3 集合元素的增删改查
3.1 查 - 遍历
1 | for 元素 in 集合 |
1 | set1 = {23,90,80,92,77} |
3.2 增
3.2.1 集合.add(元素) 在集合中添加指定元素
1 | set1 = {23,90,80,92,77} |
3.2.2 集合.update(序列) - 将序列中的元素全部添加到集合中
1 | set1 = {23,90,80,92,77} |
3.3 删
3.3.1 集合.remove(元素)
删除指定元素,元素不存在会报错
1 | set1 = {23,90,80,92,77} |
3.3.2 集合.discard(元素)
删除指定元素,元素不存在不会报错
1 | set1 = {23,90,80,92,77} |
4 改 - 无法直接修改元素的值
4.1 方法1:将要修改的元素删除,添加需要的元素
将小写的a改成大写的A
1 | set5 = {'a','b','c'} |
5 数学集合运算 : & (交集),|(并集),-(差集),^(对称差集),>/<(真子集),>=,<=(子集)
5.1 集合1 & 集合2 - 获取两集合的公共元素
1 | set1 = {1,2,3,4,5,6,7} |
5.2 集合1 | 集合2 - 合并两个集合
1 | set1 = {1,2,3,4,5,6,7} |
5.3 集合1 - 集合2 集合1减去集合1中包含在集合2的元素
1 | set1 = {1,2,3,4,5,6,7} |
5.4 集合1 ^ 集合2 将两个集合合并,去掉公共部分
1 | set1 = {1,2,3,4,5,6,7} |
5.5 集合1 >/< 集合2 -> 判断集合2是否是集合1的真子集/判断集合1是否是集合2的真子集
作业
1.定义一个列表,在列表中保存6个学生的信息(学生信息中包括: 姓名、年龄、成绩(单科)、电话、性别(男、女、不明) )
1 | list1 = [ |
1. 1统计不及格学生的个数
1 | count = 0 |
1. 2打印不及格学生的名字和对应的成绩
1 | for item in list1: |
1.3 打印手机尾号是8的学生的名字
1 | for item in list1: |
1.4 打印最高分和对应的学生的名字
1 | max_score = 0 |
1.5 删除性别不明的所有学生
1 | for item in list1: |
1.6 将列表按学生成绩从大到小排序(挣扎一下,不行就放弃)
1 | for x in range(len(list1)): |
2.用三个集合表示三门学科的选课学生姓名(一个学生可以同时选多门课)
1 | chinese = {'小明', '小花', '张三', '王五','赵六'} |
2.1 求选课学生总共有多少人
1 | print('选课总人数为:',len(chinese|english|math)) |
2.2 求只选了第一个学科的人的数量和对应的名字
1 | count = 0 |
2.3 求只选了一门学科的学生的数量和对应的名字
1 | set2 = (chinese|english|math)-(chinese&english)-(chinese&math)-(english&math) |
2.4 求只选了两门学科的学生的数量和对应的名字
1 | count =0 |
2.5 求选了三门学生的学生的数量和对应的名字
1 | count =0 |