Python 字典 (dict)

Python 字典 dict 的用法、访问方式及与 JavaScript 对象的对比。

#type / concept #status / growing #resource / python #tech / lang / python

[!info] related notes

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 dictJavaScript object
创建{"name": "Alice"}{ name: "Alice" }
读取user["name"]user.nameuser["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"}
]

边界与易混淆点

  1. key 必须是可哈希类型str, int, tuple 可以作 key,list, dict 不行
  2. KeyError vs get()dict["missing"] 报错,dict.get("missing") 返回 None
  3. Python 字典是纯数据容器:不像 JS 对象可以混入方法(虽然 value 可以是函数,但不常见)
  4. Python 3.7+ 字典保持插入顺序:之前版本的字典是无序的
创建于 2026/6/6 更新于 2026/6/6