【Python入门系列】第7讲:Python的内置容器全面详解(2026最新版)

恭喜你!学完前6讲,你已经掌握了Python的“骨架”和“基本序列”。
从这一讲开始,我们进入 Python四大内置容器 的核心部分:

  • 列表(list) —— 已学(可变序列)
  • 字典(dict) —— 本讲重点 ★★★★★
  • 集合(set) —— 本讲重点 ★★★★
  • 元组(tuple) —— 已学(不可变序列)

这四大容器几乎能解决80%以上的数据存储需求。掌握它们,你写代码会瞬间变得高效、专业。

1. 字典(dict)—— 键值对映射容器(最重要!)

字典是 无序(Python 3.7+ 保持插入顺序)、可变 的映射类型,用 {} 定义。

(1)基本创建与操作

# 创建字典
empty = {}
person = {"name": "重阳", "age": 25, "city": "Brussels", "is_student": False}

# 推荐写法(更清晰)
student = {
    "name": "重阳",
    "age": 25,
    "city": "Brussels",
    "scores": [95, 88, 92]
}

# 访问
print(student["name"])        # 重阳
print(student.get("age"))     # 25 (推荐!不存在时不会报错)

# 添加/修改
student["email"] = "chongyang@example.com"
student["age"] = 26           # 修改

# 删除
del student["city"]
popped = student.pop("email")   # 删除并返回值

(2)常用方法(必须熟练掌握)

print(student.keys())      # dict_keys(['name', 'age', ...])
print(student.values())    # dict_values(['重阳', 26, ...])
print(student.items())     # dict_items([('name', '重阳'), ...])  ← 最常用!

# 遍历字典(三种方式)
for key in student:                    # 只遍历键
    print(key, student[key])

for value in student.values():         # 只遍历值
    print(value)

for key, value in student.items():     # 最推荐!同时拿到键和值
    print(f"{key}: {value}")

(3)字典推导式(优雅写法)

squares = {i: i**2 for i in range(6)}
print(squares)          # {0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25}

# 带条件
even_squares = {i: i**2 for i in range(10) if i % 2 == 0}

(4)字典合并(Python 3.9+ 新语法)

d1 = {"a": 1, "b": 2}
d2 = {"b": 3, "c": 4}
merged = d1 | d2          # {'a': 1, 'b': 3, 'c': 4}   ← 右边覆盖左边

字典使用场景

  • 配置信息
  • 计数器(词频统计)
  • 缓存(键→值)
  • JSON数据处理(字典和JSON几乎一一对应)

2. 集合(set)—— 无序、不重复的容器

集合用 {} 定义,特点:无序、元素唯一、不支持索引

# 创建集合
empty = set()              # 注意!{} 是空字典,不是空集合
fruits = {"苹果", "香蕉", "橙子", "苹果"}   # 自动去重

print(fruits)              # {'苹果', '香蕉', '橙子'}
print(len(fruits))         # 3

常用操作

a = {1, 2, 3, 4}
b = {3, 4, 5, 6}

print(a | b)      # 并集 {1,2,3,4,5,6}
print(a & b)      # 交集 {3,4}
print(a - b)      # 差集 {1,2}
print(a ^ b)      # 对称差集 {1,2,5,6}

a.add(7)          # 添加元素
a.remove(1)       # 删除元素(不存在会报错)
a.discard(99)     # 删除元素(不存在也不报错)
popped = a.pop()  # 随机删除并返回一个元素

集合推导式

squared = {x**2 for x in range(10)}

集合最经典用途

  • 去重(列表转集合再转回列表)
  • 快速判断元素是否存在(比列表快很多)
  • 数学集合运算(交并差)
# 去重示例
lst = [1, 2, 2, 3, 4, 4, 5]
unique = list(set(lst))   # [1, 2, 3, 4, 5]

3. 四大内置容器对比总结表(强烈建议背下来)

容器定义符号是否可变是否有序是否允许重复支持索引主要用途速度特点
list[]可变有序允许通用数据存储、可修改序列中等
tuple()不可变有序允许返回多个值、配置、做dict key最快
dict{k:v}可变有序*键不允许键访问键值映射、配置、JSON极快(哈希)
set{}可变无序不允许去重、成员判断、集合运算极快(哈希)
  • Python 3.7+ 字典和集合保持插入顺序

记忆口诀
列表最灵活,元组最安全,字典查最快,集合去重复!

4. 综合实战小项目 —— 学生成绩管理系统(综合运用)

# 学生成绩管理系统
students = {
    "小明": {"math": 95, "english": 88, "chinese": 92},
    "小红": {"math": 78, "english": 95, "chinese": 85},
    "小刚": {"math": 92, "english": 80, "chinese": 90}
}

# 1. 添加新学生
students["小芳"] = {"math": 85, "english": 90, "chinese": 88}

# 2. 计算平均分
for name, scores in students.items():
    avg = sum(scores.values()) / len(scores)
    print(f"{name} 的平均分为:{avg:.1f}分")

# 3. 找出数学成绩最高的学生
max_math = max(students.items(), key=lambda x: x[1]["math"])
print(f"数学成绩最高的是:{max_math[0]},{max_math[1]['math']}分")

5. 本讲练习(建议立刻动手)

  1. 创建一个字典,记录5个你喜欢的电影(电影名 → 评分),然后遍历打印。
  2. 给定列表 [1, 2, 2, 3, 4, 4, 5, 6, 6],用集合去重后再转回列表。
  3. 用字典推导式生成 {1:1, 2:4, 3:9, ..., 10:100}(平方字典)。
  4. 写一个程序:输入一句话,统计每个单词出现的次数(提示:用 split() + 字典计数)。

把你的练习代码贴出来,我会帮你逐行检查并给出优化建议!


下一讲预告
Python入门第8讲:函数(Function)全面详解
(包括我们之前单独讲过的闭包、装饰器基础等)

准备好了吗?
回复 “下一讲” 我们继续前进!
或者对字典、集合的任何用法有疑问(比如defaultdict、frozenset等进阶内容),现在就问我!

四大容器学完后,你的Python数据处理能力已经达到入门中级水平了!继续保持,你进步飞快!🐍✨

文章已创建 5268

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

相关文章

开始在上面输入您的搜索词,然后按回车进行搜索。按ESC取消。

返回顶部