字典和集合是 Python 中最常用、最高效的两种数据结构都基于哈希表实现查询速度极快。本教程包含核心用法、代码示例、实战使用场景新手也能直接学会。一、字典dict详解1. 什么是字典字典是键值对key: value无序Python3.7 有序可变集合键必须唯一且不可变字符串 / 数字 / 元组值可以是任意类型。2. 基础语法# 空字典 empty_dict {} # 有数据的字典键: 值 student { name: 小明, age: 18, gender: 男, scores: [90, 95, 88] # 值可以是列表 }3. 核心操作必学1访问值# 方法1直接通过键访问 print(student[name]) # 输出小明 # 方法2get() 方法键不存在不会报错推荐 print(student.get(age)) # 18 print(student.get(height, 175)) # 键不存在返回默认值1752添加 / 修改元素# 修改已有键的值 student[age] 19 # 添加新键值对 student[height] 178 print(student)3删除元素# del 删除指定键 del student[gender] # pop() 删除并返回值 age student.pop(age) # 清空字典 student.clear()4遍历字典person {name: 小红, age: 20} # 遍历所有键 for key in person.keys(): print(key) # 遍历所有值 for value in person.values(): print(value) # 遍历键值对最常用 for key, value in person.items(): print(f{key}: {value})5常用内置方法dic {a: 1, b: 2} print(len(dic)) # 长度2 print(a in dic) # 判断键是否存在True二、集合set详解1. 什么是集合集合是无序、不重复的可变集合自动去重没有键值对只有单独元素。2. 基础语法# 空集合必须用set(){}是空字典 empty_set set() # 有数据的集合 s {1, 2, 2, 3, 3, 3} print(s) # 输出{1,2,3} 自动去重3. 核心操作必学1添加元素s {1, 2, 3} s.add(4) # 添加单个元素 s.update([5, 6]) # 添加多个元素2删除元素s {1,2,3} s.remove(2) # 删除元素不存在会报错 s.discard(4) # 删除元素不存在不报错 s.pop() # 随机删除一个元素 s.clear() # 清空集合3集合运算核心功能a {1, 2, 3, 4} b {3, 4, 5, 6} # 交集两个集合都有的元素 print(a b) # {3,4} # 并集两个集合所有元素去重 print(a | b) # {1,2,3,4,5,6} # 差集a有b没有 print(a - b) # {1,2} # 对称差集只在一个集合里的元素 print(a ^ b) # {1,2,5,6}4判断元素是否存在s {1,2,3} print(2 in s) # True三、字典 vs 集合 核心区别特性字典dict集合set存储形式键值对key: value单个元素元素唯一性键key唯一所有元素唯一有序性Python3.7 有序无序查找速度极快通过 key极快主要用途映射、存储对象信息去重、关系运算四、使用场景1. 字典dict使用场景字典适合存储结构化数据、映射关系是开发中使用最多的数据结构之一。场景 1存储个人 / 商品 / 用户信息user { id: 1001, username: zhangsan, email: test123.com, is_vip: True }场景 2快速映射如中文 - 英文对照color_map { 红色: red, 蓝色: blue, 绿色: green } print(color_map[红色]) # red场景 3统计词频words [apple, banana, apple, orange, banana, apple] count {} for w in words: count[w] count.get(w, 0) 1 print(count) # {apple:3, banana:2, orange:1}场景 4API 接口数据传输前后端交互# 接口返回数据标准格式 response { code: 200, msg: 请求成功, data: [{name: 商品1}, {name: 商品2}] }2. 集合set使用场景集合最大优势自动去重 高速关系运算。场景 1列表快速去重最简单my_list [1, 2, 2, 3, 3, 3] my_list list(set(my_list)) print(my_list) # [1,2,3]场景 2判断元素是否存在比列表快 100 倍# 黑名单判断 black_list {user1, user2, user3} if user1 in black_list: print(禁止访问)场景 3找出两个列表的共同元素# 两个班级的学生找同时报名两门课的学生 class1 {张三, 李四, 王五} class2 {李四, 赵六, 王五} print(class1 class2) # {王五, 李四}场景 4去除重复日志 / 数据log [error, info, error, warning, info] unique_log set(log)五、新手常见坑字典的键不能重复重复会覆盖旧值字典的键必须不可变不能用列表做键创建空集合必须用set(){}是字典集合是无序的不能用索引访问如s[0]报错查询速度字典、集合 列表大量数据优先用它们总结字典存键值对适合存对象信息、映射关系、统计数据集合存唯一元素适合去重、交集 / 并集 / 差集运算两者都是高速查询数据结构是 Python 开发必备技能