太棒了!你已经来到 Python 30天学习计划的第6天!🎉
今天我们将一次性掌握 Python 的另外三种核心容器类型:元组(tuple)、字典(dict)和集合(set)。它们和列表一起,构成了 Python 数据结构的“四大金刚”!
🎯 第6天目标:
✅ 理解并使用 元组(tuple) —— 不可变的有序序列
✅ 掌握 字典(dict) —— 键值对存储(最常用的数据结构之一)
✅ 学会使用 集合(set) —— 无序、不重复的元素集
✅ 能根据场景选择合适的容器类型
📘 一、元组(Tuple)——“不可变的列表”
🔹 特点:
- 用 圆括号
() 定义(也可以省略)
- 不可变:创建后不能修改、添加或删除元素
- 有序,支持索引和切片
- 常用于表示固定结构的数据(如坐标、RGB颜色、数据库记录)
# 创建元组
point = (3, 4)
rgb = (255, 128, 0)
person = \"李明\", 25, \"北京\" # 括号可省略!
print(point[0]) # 3
print(person[1:]) # (25, '北京')
# ❌ 以下操作会报错!
# point[0] = 5
# TypeError: 'tuple' object does not support item assignment
✅ 为什么用元组?
- 安全性:防止意外修改
- 性能略优于列表(因为不可变)
- 可作为字典的键(列表不行!)
📘 二、字典(Dictionary)——“键值对”的映射
🔹 特点:
- 用 花括号
{} 定义
- 存储 键(key)→ 值(value) 的映射
- 无序(但在Python 3.7及以上版本中,字典会保持插入顺序)
- 键必须是不可变类型(如字符串、数字、元组),值可以是任意类型
# 创建字典
student = {
\"name\": \"王芳\",
\"age\": 20,
\"courses\": [\"数学\", \"英语\"],
\"is_graduate\": False
}
# 访问值
print(student[\"name\"]) # 王芳
print(student.get(\"age\")) # 20(推荐用 .get(),避免 KeyError)
# 添加/修改
student[\"grade\"] = \"大二\" # 新增键值对
student[\"age\"] = 21 # 修改已有键
# 删除
del student[\"is_graduate\"]
🔹 常用方法:
| 方法 |
作用 |
.keys() |
返回所有键(类似列表) |
.values() |
返回所有值 |
.items() |
返回键值对元组列表 |
.get(key, default) |
安全获取值,不存在时返回默认值 |
✅ 遍历字典(提前预览循环):
for key in student:
print(f\"{key}: {student[key]}\")
# 或更优雅地:
for key, value in student.items():
print(f\"{key} → {value}\")
📘 三、集合(Set)——“去重工具箱”
🔹 特点:
- 用 花括号
{} 或 set() 创建
- 无序、元素唯一(自动去重)
- 元素必须是不可变类型(不能放列表、字典)
- 支持数学中的集合运算:交集、并集、差集等
# 创建集合
fruits = {\"苹果\", \"香蕉\", \"橙子\"}
nums = set([1, 2, 2, 3, 3, 3]) # 自动去重 → {1, 2, 3}
# 添加/删除
fruits.add(\"葡萄\")
fruits.remove(\"香蕉\") # 若不存在会报错
fruits.discard(\"西瓜\") # 若不存在,不报错
# 集合运算
a = {1, 2, 3}
b = {3, 4, 5}
print(\"并集:\", a | b) # {1, 2, 3, 4, 5}
print(\"交集:\", a & b) # {3}
print(\"差集 a-b:\", a - b) # {1, 2}
print(\"对称差集:\", a ^ b) # {1, 2, 4, 5}
✅ 典型用途:
- 去除列表重复项:
list(set(my_list))
- 快速判断元素是否存在(利用哈希表实现,比列表的线性查找快得多!)
🧠 四、四种容器对比总结
| 容器 |
符号 |
有序? |
可变? |
允许重复? |
典型用途 |
| 列表(list) |
[ ] |
✅ |
✅ |
✅ |
存储有序数据(成绩、任务) |
| 元组(tuple) |
( ) |
✅ |
❌ |
✅ |
固定结构(坐标、配置) |
| 字典(dict) |
{ } |
⚠️(3.7+保序) |
✅ |
键唯一 |
映射关系(用户信息、配置表) |
| 集合(set) |
{ } |
❌ |
✅ |
❌ |
去重、成员检测、集合运算 |
💡 如何选择?
- 要 顺序 + 可改 → 列表
- 要 顺序 + 不可改 → 元组
- 要 键值对应 → 字典
- 要 去重或快速查找 → 集合
💻 今日实战:day6.py

✅ 今日小任务
1、创建一个字典,存储你的个人信息(姓名、年龄、城市、爱好列表)
2、用集合找出两个朋友的共同爱好
以下是一个包含元组的列表(还记得列表吗?)和集合运算的练习:
people = [
(\"张三\", 18, \"上海\", [\"读书\", \"电影\"]),
(\"李四\", 19, \"北京\", [\"编程\", \"旅行\"]),
(\"王五\", 20, \"广州\", [\"读书\", \"编程\"])
]
my_hobbies = {\"读书\", \"跑步\", \"编程\"}
friend_hobbies = {\"电影\", \"编程\", \"旅行\"}
print(\"共同爱好:\", my_hobbies & friend_hobbies)
📝 小结
- 元组:安全、不可变的序列
- 字典:强大的键值映射,日常开发最常用之一
- 集合:高效去重与集合运算
- 根据需求选择合适的数据结构,是写出高效代码的关键!
🎉 恭喜完成第6天!
你现在已经掌握了 Python 的全部四种内置容器类型!这是迈向中级编程的重要一步!
理解这些基础数据结构,是未来构建复杂应用和深入学习如 PyPI 生态中高级库的基石。
继续加油,未来的开发者!👨💻👩💻 希望你在 云栈社区 的探索之旅中不断成长,发现更多编程的乐趣与深度。