Python进阶必学:字典查值、元组防改、集合去重,一文全搞定! Python进阶必学字典查值、元组防改、集合去重一文全搞定作者着迷不白字典、元组、集合是 Python 中三种重要的数据结构。字典提供键值对映射元组是不可变的序列集合用于去重和集合运算。本篇带你全面掌握它们的创建与常用操作。作业 答案在文末方便自测。 前言在前几篇笔记中我们学习了字符串和列表它们是序列类型的代表。从本篇开始我们将学习另外三种核心数据结构字典dict通过“键”来查找“值”就像查字典一样快速。元组tuple与列表类似但一旦创建就不能修改适合存储固定数据。集合set无序且元素唯一支持并集、交集等数学运算。掌握它们你的 Python 数据处理能力将更上一层楼。一、字典dict字典是一种键值对key-value的映射结构使用大括号{}键与值之间用冒号:分隔键值对之间用逗号,分隔。键必须唯一且不可变通常用字符串、数字值可以是任意类型。为什么需要字典对比列表列表只能通过下标访问元素无法表达数据的“含义”字典通过有意义的键来获取值代码更清晰。# 列表方式无法直接看出 98 是什么成绩 list1 [语文, 98, 数学, 96, 英语, 100] print(list1[1]) # 98 # 字典方式一目了然 dict1 {语文: 98, 数学: 96, 英语: 100} print(dict1[语文]) # 98✅ 字典的创建# 方式1大括号直接创建 person {name: Alice, age: 25, city: New York} # 方式2使用 dict() 构造函数 person2 dict(nameBob, age30) # 方式3两个列表拼成字典使用 zip keys [name, age, city] values [charlie, 35, chicago] dict3 dict(zip(keys, values)) print(dict3) # {name: charlie, age: 35, city: chicago}✅ 获取字典元素print(person[name]) # Alice如果键不存在会报错 KeyError print(person.get(age)) # 25键不存在返回 None不报错✅ 修改与添加元素# 修改已存在的键 person[age] 26 # 添加新键值对直接赋值不存在的键 person[email] aliceexample.com print(person) # {name: Alice, age: 26, city: New York, email: aliceexample.com}✅ 删除元素# del 语句 del person[city] # pop() 方法删除并返回对应的值 email person.pop(email) print(email) # aliceexample.com✅ 字典常用方法方法作用keys()返回所有键可遍历values()返回所有值items()返回所有键值对元组形式get(key)安全获取值不存在返回 Nonepop(key)删除指定键并返回值update(other)用另一个字典更新当前字典copy()浅拷贝✅ 综合练习个人信息管理# 1. 创建字典 person {name: David, age: 40, 职业: 工程师} # 2. 获取名字 print(Name:, person[name]) # 3. 修改年龄 person[age] 41 print(Updated Age:, person[age]) # 4. 添加邮箱 person[email] davidexample.com print(Email:, person[email]) # 5. 删除职业 del person[职业] print(删除后的个人信息:, person) # 6. 批量更新 person.update({name: David Smith, 城市: 旧金山}) print(更新后的信息:, person)二、元组tuple元组是不可变的序列用圆括号()表示。一旦创建就不能添加、删除或修改其中的元素。适合存储坐标、日期等固定数据。✅ 创建元组# 包含多个元素 tuple1 (1, 2, 3) # 空元组 tuple2 () # 单个元素的元组注意逗号 tuple3 (4,) # 如果不加逗号会被当作整数 4 print(type(tuple3)) # class tuple✅ 访问与切片与列表类似tuple5 (12, 13, 14, 15, 16) print(tuple5[1]) # 13 print(tuple5[1:4]) # (13, 14, 15) print(len(tuple5)) # 5✅ 不可变性重点tuple7 (20, 21, 22) # tuple7[0] 23 # 会引发 TypeError: tuple object does not support item assignment✅ 其他操作# 将列表转换为元组 list_to_tuple tuple([6, 7, 8, 9]) print(list_to_tuple) # (6, 7, 8, 9)三、集合set集合是无序、元素唯一的数据结构用大括号{}表示但不能是空的空{}是字典。集合常用于去重和集合运算并集、交集、差集。✅ 创建集合# 使用大括号 set1 {1, 2, 3, 4, 5} # 使用 set() 函数可去重 set2 set([1, 2, 2, 3, 4, 4, 5]) # {1, 2, 3, 4, 5} # 空集合必须用 set()不能用 {} empty_set set()✅ 集合的基本操作# 添加元素 set1.add(6) # 删除元素如果元素不存在会报错 KeyError set1.remove(3) # 清空集合 set1.clear() # 判断元素是否存在 print(4 in set2) # True✅ 集合的数学运算setA {1, 2, 3, 4} setB {3, 4, 5, 6} # 并集所有元素 print(setA | setB) # {1, 2, 3, 4, 5, 6} # 交集共同元素 print(setA setB) # {3, 4} # 差集在A但不在B print(setA - setB) # {1, 2}✅ 常用方法方法作用add(element)添加元素remove(element)删除元素不存在则报错discard(element)删除元素不存在不报错pop()随机移除并返回一个元素clear()清空集合✅ 综合练习setA {1, 2, 3, 4} setB {3, 4, 5, 6} setA.add(7) print(添加之后:, setA) # {1, 2, 3, 4, 7} setA.remove(2) print(删除之后:, setA) # {1, 3, 4, 7} print(并集:, setA | setB) # {1, 3, 4, 5, 6, 7} print(交集:, setA setB) # {3, 4} print(差集:, setA - setB) # {1, 7}作业请先独立完成再对照答案一、单选题下列关于列表下标取值的说法正确的是 A. 列表下标只能从 0 开始正向取值不能反向如 -1B. 嵌套列表l [1, [2, [3]]]中取3的写法是l[1][1][0]C. 列表下标越界不会报错D. 列表[a, b]中列表为[2]会返回空值执行l [11,22,33]; l.append(44); l.insert(1,55)后列表l的结果是 A.[11,55,22,33,44]B.[55,11,22,33,44]C.[11,22,33,55,44]D.[11,22,55,33,44]字典d {name:maiya, age:18}下列操作错误的是 A.print(d[name])B.d[gender] 女C.print(d[0])D.del d[age]关于元组的特性描述正确的是 A. 元组支持append()函数添加元素B. 元组(10)和表示存储一个数据C. 元组支持下标取值但不支持切片D. 元组一旦定义内部元素无法修改字典d {a:1, b:2, a:3}打印d[a]的结果是 A. 1B. 2C. 3D. 报错二、编程题定义列表l [5, 8, 2, 9, 1, 8]完成以下操作a. 删除列表中所有的数字8b. 在列表末尾添加数字10c. 将列表中索引为2的元素修改为7d. 打印最终的列表。定义字典student {name:张三, score:85, gender:男}完成以下操作a. 新增键值对age:18b. 将分数score修改为90c. 删除性别gender键值对d. 打印字典中所有的键和所有的值。选做题定义嵌套列表l [python, [java, [c, javascript], php], ruby]通过下标取值提取出javascript并打印。作业答案单选题答案题号答案解析1BA列表支持负下标如 -1C下标越界会报错D[2]越界报错。Bl[1]→[2, [3]][1]→[3][0]→3正确。2A初始[11,22,33]append(44)→[11,22,33,44]insert(1,55)→ 在下标1插入55 →[11,55,22,33,44]。3C字典通过键访问不能通过整数下标d[0]会报错。4D元组不可变。A 错误无 appendB 错误(10)是整数正确单元素元组应为(10,)C 错误元组支持切片。5C字典的键必须唯一如果重复定义后面的值会覆盖前面的所以a最终为 3。编程题答案1. 列表操作l [5, 8, 2, 9, 1, 8] # a. 删除所有 8使用循环注意删除时倒序或用 while while 8 in l: l.remove(8) # b. 末尾添加 10 l.append(10) # c. 修改索引 2 的元素为 7 l[2] 7 # d. 打印 print(l) # [5, 2, 7, 1, 10]2. 字典操作student {name: 张三, score: 85, gender: 男} # a. 新增 age student[age] 18 # b. 修改分数 student[score] 90 # c. 删除 gender del student[gender] # d. 打印所有键和所有值 print(键:, student.keys()) print(值:, student.values())3. 嵌套列表取值选做题l [python, [java, [c, javascript], php], ruby] # javascript 在 l[1][1][1] print(l[1][1][1]) # javascript 总结本篇笔记涵盖了字典、元组、集合的核心知识字典键值对映射通过键快速取值。常用操作增删改查、keys()、values()、items()。元组不可变序列适用于固定数据。注意单元素元组需要逗号。集合无序、元素唯一支持去重和数学运算并集|、交集、差集-。这三种数据结构在实际开发中使用频率极高请结合练习题加深理解。 如果觉得有帮助欢迎收藏或分享给一起学习 Python 的小伙伴下一篇预告条件判断与循环 —— 让程序学会“思考”和“重复”。©着迷不白— 人生苦短我用 Python