本章目标掌握字典的定义和基本操作掌握字典的常用内置方法掌握集合的定义和基本操作掌握集合的常用运算理解字典、集合与列表、元组的区别与适用场景能够使用字典和集合处理复杂数据 1. 字典概述字典是Python中唯一的映射类型,用于存储键值对(key-value)形式的数据。字典中的键必须是不可变类型(如字符串、数字、元组),且键必须唯一;值可以是任意数据类型。Python 3.7及以上版本中,字典会保留元素的插入顺序。2. 字典的基本操作2.1 定义字典字典使用大括号{}定义,每个键值对用冒号:分隔,键值对之间用逗号分隔。 定义空字典 empty_dict = {} 定义包含键值对的字典 student = {"name": "张三","age": 20,"height": 1.75,"is_student": True} 定义嵌套字典 class_info = {"class_name": "Python一班","students": ["张三", "李四"],"teacher": {"name": "王老师", "age": 30}} 2.2 访问字典元素通过键来访问对应的值,如果键不存在会抛出KeyError异常。student = {"name": "张三", "age": 20} 访问name对应的值 print(student["name"]) 20 使用get()方法访问,键不存在时返回None或指定默认值 print(student.get("gender")) 男 2.3 修改和添加元素通过键直接赋值,如果键存在则修改值,不存在则添加新的键值对。student = {"name": "张三", "age": 20} 修改age的值 student["age"] = 21print(student) {'name': '张三', 'age': 21, 'gender': '男'} 2.4 删除元素 del:删除指定键值对 student = {"name": "张三", "age": 20, "gender": "男"}del student["gender"]print(student) 20print(student) ('gender', '男') clear():清空字典 student.clear()print(student) dict_keys(['name', 'age', 'gender']) 转换为列表 print(list(student.keys())) dict_values(['张三', 20, '男']) items():获取所有键值对 print(student.items()) {'name': '张三', 'age': 21, 'gender': '男', 'height': 1.75} 4. 集合概述集合是无序、不重复的元素序列,用于存储唯一的元素。集合中的元素必须是不可变类型(如字符串、数字、元组),集合本身是可变的。集合主要用于去重和集合运算(交集、并集、差集等)。5. 集合的基本操作5.1 定义集合集合使用大括号{}定义,元素之间用逗号分隔;也可以使用set()函数创建集合。 定义空集合(注意:不能用{},{}表示空字典) empty_set = set() 定义包含元素的集合 num_set = {1, 2, 3, 4, 5} 集合自动去重 duplicate_set = {1, 2, 2, 3, 3, 3}print(duplicate_set) {1, 2, 3, 4, 5} 5.2 添加元素num_set = {1, 2, 3} add():添加单个元素 num_set.add(4)print(num_set) {1, 2, 3, 4, 5, 6, 7} 5.3 删除元素num_set = {1, 2, 3, 4, 5} remove():删除指定元素,元素不存在会抛出异常 num_set.remove(3)print(num_set) 不会报错 pop():随机删除并返回一个元素 random_num = num_set.pop()print(random_num) clear():清空集合 num_set.clear()print(num_set) {4, 5}print(set1.intersection(set2)) {1, 2, 3, 4, 5, 6, 7, 8}print(set1.union(set2)) {1, 2, 3}print(set1.difference(set2)) {1, 2, 3, 6, 7, 8}print(set1.symmetric_difference(set2)) # {1, 2, 3, 6, 7, 8} 7. 四种复合数据类型对比| 类型 | 定义符号 | 可变性 | 元素特点 | 主要用途 ||------|----------|--------|----------|----------|| 列表 | [] | 可变 | 有序、可重复 | 存储需要修改的有序数据 || 元组 | () | 不可变 | 有序、可重复 | 存储不需要修改的有序数据 || 字典 | {} | 可变 | 键值对、键唯一不可变 | 存储映射关系数据 || 集合 | {}或set() | 可变 | 无序、元素唯一不可变 | 去重、集合运算 |8. 综合实战:通讯录管理系统编写一个简单的通讯录程序,使用字典存储联系人信息,实现添加、查询、删除、显示所有联系人功能。 存储联系人的字典,键为姓名,值为电话号码 contacts = {} while True:print("\n通讯录管理系统")print("1. 添加联系人")print("2. 查询联系人")print("3. 删除联系人")print("4. 显示所有联系人")print("5. 退出") choice = input("请输入你的选择:") if choice == "1":name = input("请输入联系人姓名:")if name in contacts:print("该联系人已存在!")else:phone = input("请输入电话号码:")contacts[name] = phoneprint("联系人添加成功!")elif choice == "2":name = input("请输入要查询的联系人姓名:")if name in contacts:print(f"{name}的电话号码是:{contacts[name]}")else:print("该联系人不存在!")elif choice == "3":name = input("请输入要删除的联系人姓名:")if name in contacts:del contacts[name]print("联系人删除成功!")else:print("该联系人不存在!")elif choice == "4":if not contacts:print("通讯录为空")else:print("所有联系人:")for name, phone in contacts.items():print(f"{name}: {phone}")elif choice == "5":print("感谢使用,再见!")breakelse:print("输入错误,请重新选择") 9. 本章总结10. 字典是键值对映射类型,键必须唯一且不可变,值可以是任意类型11. 字典通过键访问元素,常用方法有get、keys、values、items、update等12. 集合是无序不重复的元素序列,主要用于去重和集合运算13. 集合常用运算包括交集、并集、差集、对称差集14. 列表、元组、字典、集合各有特点,需根据实际需求选择合适的类型15. 字典适合存储具有映射关系的数据,集合适合处理去重和集合运算场景16. 课后练习17. 定义一个字典,存储你的个人信息(姓名、年龄、性别、爱好),并打印出来18. 编写程序,统计一个字符串中每个字符出现的次数19. 编写程序,找出两个列表中相同的元素20. 编写程序,去除一个列表中的重复元素并保持原来的顺序