Python 字典 (dict)
Python 字典 dict 的用法、访问方式及与 JavaScript 对象的对比。
#type / concept
#status / growing
#resource / python
#tech / lang / python
[!info] related notes
- 所属 MOC: python-moc
- 前置概念: python数据类型与数据结构
- 并列概念: Python 错误处理
- 易混淆概念: JavaScript
object(见下文对比)- 关系笔记: python
Python 字典 (dict)
一句话定义
dict 是 Python 中的键值对容器,用 {} 创建,通过 key 访问 value。
核心机制
创建与访问
# 创建字典
user = {
"name": "Alice",
"age": 20,
"city": "Shanghai"
}
# 访问 —— 用中括号
print(user["name"]) # Alice
Python 字典不能用点语法访问:
user.name # ❌ AttributeError(除非是自定义类对象)
常用操作
# 添加/修改
user["email"] = "alice@example.com"
# 删除
del user["city"]
# 检查 key 是否存在
"name" in user # True
"phone" in user # False
# 安全读取(不存在时不报错)
user.get("phone") # None
user.get("phone", "N/A") # "N/A"(自定义默认值)
# 遍历
for key, value in user.items():
print(f"{key}: {value}")
嵌套字典
AI 接口返回的数据通常是嵌套字典:
response = {
"choices": [
{
"delta": {
"content": "Hello"
}
}
]
}
# 逐层访问
content = response["choices"][0]["delta"].get("content")
字典 vs JavaScript 对象
| 概念 | Python dict | JavaScript object |
|---|---|---|
| 创建 | {"name": "Alice"} | { name: "Alice" } |
| 读取 | user["name"] | user.name 或 user["name"] |
| key 不加引号 | ❌ 必须加 | ✅ 普通标识符可省略 |
| 点语法访问 | ❌ user.name 报错 | ✅ user.name 正常 |
| key 不存在 | KeyError | 返回 undefined |
| 安全读取 | user.get("name") | user?.name |
最小例子
# 用字典表示一条 AI 对话消息
message = {
"role": "user",
"content": "hello"
}
# 多条消息组成列表 —— 这就是 OpenAI API 的 messages 格式
messages = [
{"role": "system", "content": "You are a tutor."},
{"role": "user", "content": "hello"}
]
边界与易混淆点
- key 必须是可哈希类型:
str,int,tuple可以作 key,list,dict不行 KeyErrorvsget():dict["missing"]报错,dict.get("missing")返回None- Python 字典是纯数据容器:不像 JS 对象可以混入方法(虽然 value 可以是函数,但不常见)
- Python 3.7+ 字典保持插入顺序:之前版本的字典是无序的