Python 字典:结构和哈希图

掌握 Python 字典。学习存储、获取和处理键值对数据。了解映射的性能和最佳实践。

在编辑器中尝试

概述

字典可以说是 Python 中最重要、最优化的数据结构。字典是存储在“键:值”对中的可变数据值集合。如果你想象一本现实世界的字典,“键”就是你正在查找的单词,“值”就是定义。这种配对结构使得检索、更新和管理关系数据变得异常高效。

在底层,Python 字典被实现为高度优化的哈希表(或哈希映射)。这意味着通过键检索值是一个“O(1)”常量时间操作。无论你的字典包含十个项目还是一千万个项目,Python 都可以立即直接跳转到该值的内存地址,而不需要扫描整个集合。

要定义字典,请使用花括号“{}”,键和值之间用冒号“:”分隔。键必须是不可变类型(如字符串、整数或元组),这意味着您不能使用列表作为字典键。然而,值绝对可以是任何东西,包括列表、对象,甚至是深层嵌套的字典,这使得它们非常适合表示类似 JSON 的数据结构。

访问值是使用括号表示法完成的(例如,`user["name"]`)。但是,如果密钥不存在,此方法会抛出“KeyError”,立即停止程序执行。为了编写更安全的代码,专业人员使用 `.get()` 方法(例如,`user.get("name")`),如果密钥丢失,该方法会优雅地返回 `None` 或自定义默认值,从而防止不必要的崩溃。

从历史上看,Python 字典是完全无序的。但是,从Python 3.7 开始,官方保证字典保持插入顺序。这意味着,当您使用“.keys()”、“.values()”或“.items()”等方法迭代字典时,项目将按照它们最初添加到字典中的确切顺序返回,从而将哈希映射的速度与列表的可预测性相结合。

代码和执行输出

大量利用嵌套键值对创建用户配置文件。

user = {
    "username": "coder123",
    "role": "admin",
    "active": True
}

user["last_login"] = "2026-04-10" # Adding a key
print(f"Username is {user['username']}")

# Iterating over key-value pairs
for key, value in user.items():
    print(f"{key}: {value}")
端子输出
Username is coder123
username: coder123
role: admin
active: True
last_login: 2026-04-10

逐步实施

  • 处理来自 REST API 的 JSON 响应
  • 将唯一 ID 映射到大数据对象
  • 存储应用程序配置参数

常见问题解答

如果我尝试访问不存在的密钥会发生什么?

使用括号表示法 (user["name"]) 会引发 KeyError。使用 user.get("name") 返回 None 而不会抛出。

相关主题

推荐的 Python 资源

通过相关的交互式教程、备忘单和代码比较来扩展您的知识。