在 Python 中,dict(字典)是最重要、最常用的数据类型之一。
如果说 list 是顺序容器,set 是去重集合,那 dict 就是 Python 世界里的'哈希表 / 映射表 / Key-Value 存储'核心实现。
一句话总结:
dict = 用 key 快速定位 value 的数据结构
它几乎支撑了 Python 的一切:
- 对象属性
- JSON 数据
- 配置文件
- HTTP 请求参数
- 数据库 ORM
- 缓存系统
本文详解 Python 字典(dict)数据类型。涵盖基本概念、创建方式(字面量、构造函数等)、常用操作(访问、增删改)、遍历方法、高级用法(推导式、合并、defaultdict)、底层原理(哈希表)及常见坑点。强调 dict 作为 Key-Value 存储在 API、配置、缓存等工程场景的核心作用,帮助开发者掌握这一核心数据结构。
在 Python 中,dict(字典)是最重要、最常用的数据类型之一。
如果说 list 是顺序容器,set 是去重集合,那 dict 就是 Python 世界里的'哈希表 / 映射表 / Key-Value 存储'核心实现。
一句话总结:
dict = 用 key 快速定位 value 的数据结构
它几乎支撑了 Python 的一切:
dict 是一种 可变(mutable)、无序(Python 3.7+ 保留插入顺序)、
Key-Value 键值对 的数据结构。
person = { "name": "张三", "age": 30, "city": "北京" }
str / int / tuple)| 特性 | 说明 |
|---|---|
| Key 唯一 | 重复 key 会被覆盖 |
| Key 必须可 hash | 不能是 list、dict |
| Value 任意 | 可以是任意 Python 对象 |
| 查找快 | 平均时间复杂度 O(1) |
| 可变 | 可随时增删改 |
d = {"a": 1, "b": 2}
d = dict(a=1, b=2)
pairs = [("a", 1), ("b", 2)]
d = dict(pairs)
keys = ["name", "age", "city"]
d = dict.fromkeys(keys, None)
⚠️ 注意:value 是同一个引用
d["name"]
⚠️ key 不存在会抛异常:KeyError
更安全方式:
d.get("name")
d.get("salary", 0)
d["age"] = 31
d["salary"] = 20000
key 存在 → 修改
key 不存在 → 新增
del d["age"]
value = d.pop("age", None)
d.clear()
for k in d:
print(k)
for v in d.values():
print(v)
for k, v in d.items():
print(k, v)
squares = {x: x*x for x in range(5)}
# 过滤
even = {x: x for x in range(10) if x % 2 == 0}
📌 类似 list 推导式,但更适合 构建映射关系
a = {"x": 1}
b = {"y": 2}
c = a | b
旧写法:
c = {**a, **b}
d = {}
d.setdefault("count", 0)
d["count"] += 1
常用于:
from collections import defaultdict
d = defaultdict(int)
d["a"] += 1
非常适合:
request_data["user"]["id"]
settings = { "DEBUG": True, "DB_HOST": "localhost" }
row = { "id": 1, "name": "张三" }
cache[user_id] = user_info
dict 底层是:
哈希表(Hash Table)
核心逻辑:
因此:
| 操作 | 平均复杂度 |
|---|---|
| 查询 | O(1) |
| 插入 | O(1) |
| 删除 | O(1) |
📌 这也是 dict 成为 Python 核心的原因。
d[[1, 2]] = "x" # TypeError
d["not_exist"] # KeyError
✔️ 正确方式:
d.get("not_exist")
for k in d:
del d[k] # 错误
✔️ 正确方式:
for k in list(d.keys()):
del d[k]
| 类型 | 适合场景 |
|---|---|
| list | 有序、索引访问 |
| tuple | 不可变、当 key |
| set | 去重 |
| dict | 快速查找、映射 |
一句话总结:
需要'通过名字找数据' → 用 dict

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML 转 Markdown 互为补充。 在线工具,Markdown 转 HTML在线工具,online
将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML 转 Markdown在线工具,online