沧州模板建站平台技术支持 东莞网站建设舞蹈培训
2026/1/12 14:13:57 网站建设 项目流程
沧州模板建站平台,技术支持 东莞网站建设舞蹈培训,山西省建筑工程网,千锋教育和达内哪个好在上一篇《Python数据结构#xff08;上#xff09;》中#xff0c;我们介绍了列表#xff08;list#xff09;和元组#xff08;tuple#xff09;这两种常用的数据结构。本篇将继续深入#xff0c;介绍另外两种重要的内置数据结构——字典#xff08;dictionary…在上一篇《Python数据结构上》中我们介绍了列表list和元组tuple这两种常用的数据结构。本篇将继续深入介绍另外两种重要的内置数据结构——字典dictionary和集合set并结合实际案例进行综合练习帮助你更好地掌握它们的应用场景与操作方法。一、字典Dictionary1.1 什么是字典字典是 Python 中一种无序、可变、键值对key-value pair存储的数据结构。它用花括号{}定义每个元素由一个“键”和一个“值”组成通过键来快速查找对应的值。✅ 特点键必须是不可变类型如字符串、数字、元组值可以是任意类型键具有唯一性不允许重复1.2 创建字典# 方法1直接定义student {name: 张三,age: 20,major: 计算机科学}# 方法2使用 dict() 构造函数person dict(name李四, age22, city北京)# 方法3从键值对列表创建data [(a, 1), (b, 2)]d dict(data) # {a: 1, b: 2}1.3 字典的基本操作# 访问值print(student[name]) # 输出张三# 添加或修改student[grade] 大二 # 添加新键值对student[age] 21 # 修改已有值# 删除键值对del student[major]# 检查键是否存在if name in student:print(存在 name 键)# 获取所有键、值、键值对print(student.keys()) # dict_keys([name, age, grade])print(student.values()) # dict_values([张三, 21, 大二])print(student.items()) # dict_items([(name, 张三), (age, 21), (grade, 大二)])1.4 遍历字典for key in student:print(key, :, student[key])# 或更推荐的方式for key, value in student.items():print(f{key}: {value})二、集合Set2.1 什么是集合集合是一种无序、不重复元素的容器常用于去重和集合运算如并集、交集等。集合使用花括号{}或set()函数创建注意空集合只能用set()创建{}表示空字典。✅ 特点元素唯一自动去重元素必须是不可变类型不支持索引访问2.2 创建集合# 方法1使用花括号非空时fruits {apple, banana, apple, orange}print(fruits) # {apple, banana, orange} —— 自动去重# 方法2使用 set() 函数numbers set([1, 2, 2, 3, 4]) # {1, 2, 3, 4}# 空集合empty_set set()2.3 集合的基本操作# 添加元素fruits.add(grape)# 删除元素fruits.remove(banana) # 若不存在会报错fruits.discard(kiwi) # 安全删除不存在也不报错# 集合运算set_a {1, 2, 3}set_b {3, 4, 5}print(set_a | set_b) # 并集: {1, 2, 3, 4, 5}print(set_a set_b) # 交集: {3}print(set_a - set_b) # 差集: {1, 2}print(set_a ^ set_b) # 对称差集: {1, 2, 4, 5}三、字典 vs 集合 vs 列表对比特性列表list字典dict集合set是否有序是否Python 3.7 保持插入顺序否是否可变是是是元素是否唯一否键唯一值可重复是访问方式索引如 list[0]键如 dict[name]不支持索引典型用途存储有序数据存储键值映射去重、集合运算四、综合练习学生成绩管理系统下面我们通过一个实际案例综合运用列表、字典和集合实现一个简单的学生成绩管理功能。需求描述存储多个学生的姓名、年龄、科目成绩数学、英语支持添加学生、查询平均分、统计不及格人数统计所有出现过的科目使用集合去重找出数学和英语都及格的学生名单实现代码# 学生数据列表每个学生是一个字典students [{name: 张三, age: 20, math: 85, english: 78},{name: 李四, age: 19, math: 56, english: 92},{name: 王五, age: 21, math: 73, english: 65},{name: 赵六, age: 20, math: 90, english: 88}]# 1. 添加新学生def add_student(name, age, math, english):students.append({name: name,age: age,math: math,english: english})add_student(钱七, 19, 45, 70)# 2. 计算所有学生的平均分def average_score(subject):total sum(s[subject] for s in students)return total / len(students)print(f数学平均分: {average_score(math):.2f})print(f英语平均分: {average_score(english):.2f})# 3. 统计不及格人数任一科目 60fail_count 0for s in students:if s[math] 60 or s[english] 60:fail_count 1print(f不及格人数: {fail_count})# 4. 使用集合获取所有科目扩展性好subjects set()for s in students:subjects.update(s.keys())# 过滤掉非成绩字段subjects {s for s in subjects if s in [math, english]}print(所有科目:, subjects)# 5. 找出两科都及格的学生good_students []for s in students:if s[math] 60 and s[english] 60:good_students.append(s[name])print(双科及格学生:, good_students)输出结果数学平均分: 76.80 英语平均分: 78.20 不及格人数: 2 所有科目: {math, english} 双科及格学生: [张三, 王五, 赵六]五、小结字典适用于需要通过“键”快速查找“值”的场景如配置信息、用户资料等。集合擅长处理去重和集合运算在数据分析、筛选中非常实用。在实际开发中经常将列表 字典 集合组合使用发挥各自优势。掌握这些数据结构不仅能提升代码效率还能让你写出更清晰、更易维护的程序。六、课后练习编写一个函数接收一个单词列表返回每个单词中不同字母组成的集合。使用字典统计一段文本中每个字符出现的次数。模拟两个班级的学生名单用集合找出共同参加活动的学生交集。 提示多动手实践是掌握数据结构的最佳方式

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询