Python编程实战 · 基础入门篇 | 字典(dict)

作者:程序员爱钓鱼日期:2025/11/6

在 Python 的世界里,除了列表(list)和元组(tuple)这样的序列类型,还有一种更灵活的数据结构——字典(dict)。 如果说列表像“有序的货架”,那么字典就像“带标签的抽屉”:每个数据都有一个唯一的“名字”,叫做 键(key)

字典是 Python 最常用、最强大的数据结构之一。它能高效地存储和查找数据,被广泛用于配置、数据映射、缓存、对象建模等场景。


一 什么是字典

字典(Dictionary)是一种 键值对(key-value) 的数据结构。 它以 键(key) 定位对应的 值(value),而不是通过索引。

语法格式如下:

1# 创建字典
2person = {"name": "Alice", "age": 25, "city": "Beijing"}
3

结构理解:

  • 键(key)就像标签,必须是唯一且不可变的对象(如字符串、数字、元组);
  • 值(value)可以是任意类型;
  • 使用大括号 {} 包裹多个键值对,每对之间用逗号分隔。

二 字典的创建方式

1. 使用大括号直接创建

1student = {"name": "Tom", "age": 20, "grade": "A"}
2

2. 使用 dict() 函数

1student = dict(name="Tom", age=20, grade="A")
2

3. 从键值对列表创建

1student = dict([("name", "Tom"), ("age", 20), ("grade", "A")])
2

4. 使用 fromkeys() 创建具有相同值的字典

1keys = ["a", "b", "c"]
2d = dict.fromkeys(keys, 0)
3print(d)  # {'a': 0, 'b': 0, 'c': 0}
4

三 访问与修改字典

1. 按键访问

1person = {"name": "Alice", "age": 25}
2print(person["name"])  # Alice
3

如果访问不存在的键,会报错:

1print(person["gender"])  # KeyError
2

2. 使用 get() 安全访问

1print(person.get("gender", "未知"))  # 未知
2

get() 不存在的键时返回默认值,不会报错。

3. 修改与新增键值对

1person["age"] = 26          # 修改
2person["city"] = "Beijing"  # 新增
3print(person)
4

4. 删除键值对

1del person["city"]       # 删除指定键
2person.pop("age")        # 删除并返回该值
3person.clear()           # 清空整个字典
4

四 遍历字典

字典支持三种主要遍历方式:

1person = {"name": "Alice", "age": 25, "city": "Beijing"}
2
3# 遍历键
4for key in person.keys():
5    print(key)
6
7# 遍历值
8for value in person.values():
9    print(value)
10
11# 遍历键值对
12for key, value in person.items():
13    print(key, "=>", value)
14

输出:

1name => Alice
2age => 25
3city => Beijing
4

五 字典的常用方法

方法作用
dict.keys()返回所有键
dict.values()返回所有值
dict.items()返回键值对元组
dict.get(key, default)获取指定键的值
dict.pop(key)删除并返回指定键的值
dict.update(other)合并其他字典
dict.copy()返回字典的浅拷贝
dict.clear()清空字典内容

示例:

1user = {"name": "Tom", "age": 20}
2extra = {"city": "Shanghai"}
3user.update(extra)
4print(user)  # {'name': 'Tom', 'age': 20, 'city': 'Shanghai'}
5

六 字典的键(key)必须可哈希

字典的键必须是不可变类型,比如字符串、整数或元组。 以下写法是合法的:

1d = {
2    "name": "Lucy",
3    1: "数字键",
4    (1, 2): "元组键"
5}
6

但以下是错误的:

1d = {[1, 2]: "列表键"}  # ❌ TypeError: unhashable type: 'list'
2

七 字典推导式

Python 还支持使用 推导式(dict comprehension) 来快速生成字典。

示例:

1squares = {x: x**2 for x in range(1, 6)}
2print(squares)
3

输出:

1{1: 1, 2: 4, 3: 9, 4: 16, 5: 25}
2

还可以使用条件过滤:

1even_squares = {x: x**2 for x in range(10) if x % 2 == 0}
2print(even_squares)
3# {0: 0, 2: 4, 4: 16, 6: 36, 8: 64}
4

八 实战案例:学生成绩统计

1scores = {
2    "Tom": 88,
3    "Lucy": 92,
4    "Jack": 76
5}
6
7# 输出最高分
8max_name = max(scores, key=scores.get)
9print(f"最高分是 {max_name}{scores[max_name]}")
10
11# 计算平均分
12avg_score = sum(scores.values()) / len(scores)
13print(f"平均分是 {avg_score:.2f}")
14

输出:

1最高分是 Lucy:92
2平均分是 85.33
3

字典的灵活键值访问使得数据处理变得直观高效。


九 小结

特点说明
数据结构键值对(key-value)
是否有序Python 3.7+ 起默认保持插入顺序
键是否唯一✅ 唯一
键是否可变❌ 不可变
常用操作访问、修改、删除、遍历、合并
推导式支持字典推导式创建新字典

🔹 总结

  1. 字典是 Python 中最灵活的数据容器,用于键值对映射。
  2. 键必须是不可变对象(如字符串、数字、元组)。
  3. 使用 {} 定义,支持各种创建与遍历方式。
  4. get()items()update() 等方法是开发中最常用的。
  5. 字典推导式让生成复杂结构变得简洁高效。


Python编程实战 · 基础入门篇 | 字典(dict)》 是转载文章,点击查看原文


相关推荐


(2)100天python从入门到拿捏
硅基工坊2025/11/1

Python 的主要运用领域 Python 是一种多用途的编程语言,广泛应用于许多不同的领域。以下是 Python 的一些主要运用领域,并附上使用 Python 的公司及其产品示例。 文章目录 Python 的主要运用领域1. Web 开发2. 数据科学与分析3. 机器学习与人工智能4. 自动化与脚本编程5. 爬虫与数据抓取6. 金融与量化分析7. 科学计算与工程8. 游戏开发9. 桌面应用开发10. 嵌入式与物联网(IoT) 1. Web 开发 领域简介:Pytho


Redis(93)Redis的数据加密机制是什么?
Victor3562025/10/30

Redis本身并没有内置的数据加密机制,不过可以通过一些外部技术和配置来确保数据在传输和存储时的安全性。以下是一些常见的做法: 传输层安全性(TLS/SSL): 使用TLS/SSL加密客户端和Redis服务器之间的通信。 磁盘加密: 使用操作系统级别的磁盘加密来加密存储在磁盘上的数据。 应用层加密: 在将数据存储到Redis之前,在应用程序中对数据进行加密。 1. 传输层安全性(TLS/SSL) Redis 6.0 及以上版本支持TLS/SSL。以下是如何配置TLS/SSL: 配


Redis(86)Redis缓存的命中率如何提高?
Victor3562025/10/27

提高Redis缓存的命中率是确保系统性能和稳定性的关键。以下是一些提高Redis缓存命中率的策略,以及相应的代码示例: 1. 合理设置缓存过期时间 设置合适的缓存过期时间可以防止缓存数据过时,同时减少缓存击穿的风险。根据数据的更新频率和访问模式,选择合适的过期时间。 示例代码: import redis.clients.jedis.Jedis; public class CacheExpirationExample { private Jedis jedis; public


前端仔的一次运维实践
yuanyxh2025/10/25

最近有反馈官网访问异常卡顿,查看 Portainer 面板发现官网后台的后端服务所依赖的 jdk、mysql 等 docker 容器在不断的奔溃重建,查询发现奔溃日志,交由后端排查。 后端反馈服务器磁盘不足导致 mysql 无法启动,后端访问连不上数据库导致的。 查询磁盘占用,发现官网的 nginx 日志文件占用近 20GB,删除后官网后端访问正常运行。 日志切分与压缩 为了避免日志持续增长占用磁盘空间,需要对日志进行管理,这里使用 linux 系统自带的 logrotate 日志管理工具实现自


云开发Copilot实战:零代码打造智能体小程序指南
腾讯云开发CloudBase2025/10/22

云开发Copilot借助AI技术,实现小程序和Web应用的低代码生成与优化,大幅降低开发门槛,提升效率。无需编码,用户可通过自然语言描述需求,快速创建并发布应用,适合初创团队和快速迭代场景。 简述云开发的功能及优势 你是否曾经设想过,有一天只需简单描述需求,就能生成一个完整的小程序或 Web 应用,甚至连一行代码都无需编写?在如今快速发展的技术浪潮中,低代码开发正在重新定义开发效率,而腾讯云的云开发 Copilot 正是其中的佼佼者。借助 AI 技术,它不仅能够迅速生成应用和页面,还能优化样式、


用 Python 揭秘 IP 地址背后的地理位置和信息
烛阴2025/10/21

准备工作:安装必备工具 首先,请确保你的Python环境中安装了requests库。 pip install requests 第一步:查询自己的公网 IP 信息 import requests import json # 向ipinfo.io发送请求,不带任何IP地址,它会默认查询你自己的IP url = "https://ipinfo.io/json" try: response = requests.get(url) response.raise_for_status


使用AI编程工具的“经济学”:成本控制与性能优化策略
rengang662025/10/20

最近跟几个朋友聊天,发现大家都在用AI编程工具,比如Cursor、Claude Code、Codex等。聊到兴头上,我问了一个“煞风景”的问题:“兄弟们,这月API账单看了吗?” 空气突然安静。 没错,AI编程工具确实香,写代码、改Bug、写文档,效率起飞。但“免费的午餐”总是短暂的,当我们真正把它用在项目里,或者用量一大起来,那账单就跟坐了火箭一样往上蹿。今天,我就想跟大家聊聊,作为一个“精打细算”的程序员,我们怎么在享受AI便利的同时,把成本控制得死死的,实现“降本增效”的终极目标。 这篇文


LeetCode 402 - 移掉 K 位数字
网罗开发2025/10/19

文章目录 摘要描述题解答案题解代码分析代码逻辑逐步拆解: 示例测试及结果时间复杂度空间复杂度总结 摘要 在很多前端或后端的业务逻辑中,我们经常要处理数字的“裁剪”问题,比如在账单明细里自动保留最小金额组合、或在数据压缩时尽量保留较小值。LeetCode 第 402 题《移掉 K 位数字》(Remove K Digits)就是一个非常贴近这种逻辑的算法题。 题目的核心是:给定一个非负整数(以字符串形式表示),从中移除 k 个数字,使得剩下的数字最小化。 看似简单,但


谷歌 × 耶鲁联手发布抗癌神器!AI 推理精准狙击「隐身」癌细胞
新智元2025/10/17

「【新智元导读】近日,谷歌与耶鲁大学联合发布的大模型 C2S-Scale,首次提出并验证了一项全新的「抗癌假设」。这一成果表明,大模型不仅能复现已知科学规律,还具备生成可验新科学假设的能力。」 刚刚,AI 科学应用领域又有一件大事发生! 谷歌与耶鲁大学的科学家们联合发布了一个大模型 Cell2Sentence-Scale 27B(C2S-Scale)。 该模型提出了一个关于癌细胞行为的全新假设,并在多次体外实验中得到验证。 这一发现引发广泛关注,它展示了人工智能模型生成原创科学假设的潜力,有望


【ComfyUI】Animate单人物角色视频替换
Mr数据杨2025/10/16

在智能创作和视频生成的实践中,工作流不仅仅是节点的堆叠,而是一个围绕业务目标、数据流转和模型能力的有机整体。通过对工作流的抽象与模块化设计,我们可以在复杂的生成任务中实现高效的可复用性与灵活性。本篇文章将围绕某实际业务场景展开,介绍完整的工作流结构,并重点解析核心模型与节点配置方式,帮助读者从整体视角理解其逻辑与实现。 文章目录 工作流核心模型工作 Node 节点工作流程应用场景 开发与应用 工作流 一个完整的工作流是由数据输入、模型处理、结果合成和输出展示构成的有机链路。

首页编辑器站点地图

Copyright © 2025 聚合阅读

License: CC BY-SA 4.0