五、字典(Dictionary)学习笔记
2026-02-19
Python基础
type
Post
status
Published
date
Feb 19, 2026
slug
python-data-structures-dictionary-notes-5
summary
Python 的字典,记录一下重点和容易混淆的地方。
tags
Python数据存储容器
category
Python基础
icon
password
字典(Dictionary)学习笔记
今天学习 Python 的字典,记录一下重点和容易混淆的地方。
一、什么是字典?
1.1 我的理解
字典就是键值对的集合,像查字典一样,通过"键"找到对应的"值"。
1.2 为什么要学字典?
问题:用列表存学生信息,查找很麻烦
解决:用字典,直接通过名字查找
字典的优势:
- 查找快:通过键直接定位,不用遍历
- 语义清晰:
students["张三"]比students[0]好懂
- 结构灵活:值可以是任意类型
二、字典的特点
2.1 特点总结
特点 | 说明 | 注意点 |
键唯一 | 同一个键只能出现一次 | 重复赋值会覆盖前面的 |
键不可变 | 键必须是字符串、数字、元组 | 不能用列表、字典做键 |
值任意 | 值可以是任何类型 | 列表、字典都可以 |
无序 | 没有固定顺序(3.7+ 保持插入顺序) | 不要依赖顺序 |
可变 | 可以增删改 | 和列表一样可变 |
2.2 字典 vs 列表 vs 集合
对比 | 字典 | 列表 | 集合 |
语法 | {"a": 1} | [1, 2, 3] | {1, 2, 3} |
访问方式 | 通过键 dict["key"] | 通过索引 list[0] | 无法直接访问 |
查找速度 | O(1) - 快 | O(n) - 慢(要遍历) | O(1) - 快 |
适用场景 | 通过名称查找 | 有序序列 | 去重、集合运算 |
我的理解:
- 知道位置用列表(第几个元素)
- 知道名字用字典(键名)
- 只需要判断有无用集合
2.3 字典的内存结构
字典内存结构示意图:
三、创建字典
3.1 花括号创建(最常用)
3.2 dict() 函数创建
3.3 容易犯的错误
四、字典的基本操作
4.1 增删改查方法表
操作 | 代码 | 说明 |
添加/修改 | dict[key] = value | 键存在就修改,不存在就添加 |
访问 | dict[key] | 键不存在会报错 KeyError |
安全访问 | dict.get(key, default) | 键不存在返回 None 或默认值 |
删除 | del dict[key] | 删除指定键值对 |
弹出 | dict.pop(key) | 删除并返回该键的值 |
清空 | dict.clear() | 清空所有内容 |
4.2 访问和修改
4.3 删除操作
4.4 成员检测
4.5 其他常用方法
五、字典的遍历
5.1 四种遍历方式
字典遍历流程图:
5.2 实际应用:成绩统计
六、字典推导式
6.1 基本语法
6.2 带条件的推导式
七、实际应用案例
7.1 字符频率统计
7.2 学生信息管理系统
学生信息管理系统数据结构:
7.3 单词频率统计
7.4 配置文件管理
八、遇到的问题和解决
问题1:KeyError 是什么?
现象:访问不存在的键报错
解决:用
get() 方法或先判断 in问题2:怎么修改嵌套字典?
现象:字典的值也是字典,不知道怎么修改
解决:逐层访问
问题3:遍历字典时想同时拿到键和值?
解决:用
items()问题4:为什么修改拷贝后的字典会影响原字典?
现象:用 copy() 后修改嵌套内容,原字典也变了
原因:copy() 是浅拷贝,只拷贝了引用,嵌套的可变对象还是共享的
解决:需要深拷贝(暂时先了解,后续学习)
九、知识点回顾
9.1 核心概念
- 字典是键值对的集合
- 键必须唯一且不可变
- 通过键查找值,速度快
9.2 常用操作
dict[key] = value- 添加/修改
dict[key]/dict.get(key)- 访问
del dict[key]/dict.pop(key)- 删除
for k, v in dict.items()- 遍历
dict.update()- 合并
dict.keys()/dict.values()/dict.items()- 获取键/值/键值对
9.3 使用场景
- 需要通过名称快速查找数据
- 存储结构化数据(如学生信息、配置)
- 需要动态增删改查
- 数据统计(词频、成绩统计等)
有时候会想过去那些没有 AI 的人,是如何一步步学习、摸索、构建自己的知识体系的。那一定很难,也很漫长。很多问题没有即时答案,很多方向只能靠自己反复试错,在不确定中前行。而现在,我有 AI 作为老师。它不会疲倦,也不会厌烦,可以随时回答问题,陪我拆解复杂的概念,帮我验证想法,甚至推动我继续往前走。从某种意义上来说,这确实是属于我们这一代的一种幸运。想到这里,还是会忍不住笑一下。尤其是对于旁边根本没有老师的情况下.简直就是给我们每个人配了个私教.
Loading...
