跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
PythonAI算法

Python 字典(Dict)基础详解

Python 字典是键值对映射结构,支持无序可变存储。字典的创建、访问、修改、删除及遍历方法,对比了其与列表的差异,并通过嵌套字典和统计频率等场景展示实际应用,最后结合学生成绩管理系统进行综合实战。

锁机制发布于 2026/3/26更新于 2026/10/2513K 浏览

Python 字典(Dictionary) 是另一种核心数据结构,与列表形成完美互补。如果说列表是"有序的物品排列",字典就是"带标签的储物柜"。

Python 字典(Dict)详解

字典是**无序、可变、键值对(key-value)**的映射结构,用花括号 {} 表示。

1. 创建字典

# 空字典
empty_dict = {}
empty_dict = dict()

# 字面量创建
student = {
    "name": "张三",
    "age": 20,
    "major": "计算机科学",
    "gpa": 3.8
}

# 从键值对序列创建
pairs = [("a", 1), ("b", 2), ("c", 3)]
letter_dict = dict(pairs)
print(letter_dict)  # {'a': 1, 'b': 2, 'c': 3}

# 字典推导式
squares = {x: x**2 for x in range(1, 6)}
print(squares)  # {1: 1, 2: 4, 3: 9, 4: 16, 5: 25}

2. 访问与修改

person = {"name": "李四", "age": 25, "city": "北京"}

# 访问(通过键)
print(person["name"])      # 李四
print(person.get("age"))   # 25
(person.get(, ))  


person[] =          
person[] =   


person.update({: , : })
print
"phone"
"未设置"
# 未设置(键不存在时返回默认值)
# 修改与添加
"age"
26
# 修改已有键
"phone"
"13800138000"
# 添加新键
# 批量更新
"email"
"[email protected]"
"city"
"上海"

3. 删除操作

data = {"a": 1, "b": 2, "c": 3, "d": 4}

# 删除并返回值
val = data.pop("b")       # val=2, data 变为{"a": 1, "c": 3, "d": 4}

# 删除并返回最后插入的键值对(Python 3.7+ 保持插入顺序)
last_item = data.popitem()  # ('d', 4)

# 删除指定键
del data["a"]

# 清空
data.clear()             # {}

4. 遍历字典

scores = {"数学": 90, "英语": 85, "物理": 88, "化学": 92}

# 遍历键(默认)
for subject in scores:
    print(subject)

# 遍历值
for score in scores.values():
    print(score)

# 遍历键值对(最常用)
for subject, score in scores.items():
    print(f"{subject}: {score}分")

# 同时获取索引(enumerate 配合)
for idx, (subject, score) in enumerate(scores.items(), 1):
    print(f"{idx}. {subject}: {score}")

5. 实用技巧与场景

# 示例 1:嵌套字典 - 存储复杂信息
students = {
    "2024001": {
        "name": "王五",
        "scores": {"数学": 95, "英语": 88},
        "contact": {"phone": "139xxxx", "email": "[email protected]"}
    },
    "2024002": {
        "name": "赵六",  
        "scores": {"数学": 90, "英语": 92},
        "contact": {"phone": "138xxxx", "email": "[email protected]"}
    }
}

# 访问嵌套数据
print(students["2024001"]["scores"]["数学"])  # 95

# 示例 2:统计频率 - 经典用法
text = "hello world hello python"
word_count = {}

for word in text.split():
    word_count[word] = word_count.get(word, 0) + 1
print(word_count)  # {'hello': 2, 'world': 1, 'python': 1}

# 更优雅的写法(使用 collections.Counter)
from collections import Counter
word_count = Counter(text.split())
print(dict(word_count))  # 同上

# 示例 3:按值排序字典
scores = {"Alice": 85, "Bob": 92, "Charlie": 78, "David": 95}

# 按分数降序排序(返回列表)
sorted_by_score = sorted(scores.items(), key=lambda x: x[1], reverse=True)
print(sorted_by_score)  # [('David', 95), ('Bob', 92), ('Alice', 85), ('Charlie', 78)]

# 转回字典(Python 3.7+ 保持排序顺序)
rank_dict = dict(sorted_by_score)

6. 列表 vs 字典 对比

特性列表 []字典 {}
访问方式索引 [0]键 ["key"]
查找速度O(n) 慢O(1) 快(哈希表)
有序性有序Python 3.7+ 保持插入顺序
适用场景序列数据、队列映射关系、查表、缓存
元素要求任意对象键必须不可变(数字、字符串、元组)

综合实战:学生成绩管理系统

# 结合列表和字典的实际应用

class_score = {
    "计算机 1 班": [
        {"学号": "C001", "姓名": "张三", "成绩": {"数学": 90, "英语": 85}},
        {"学号": "C002", "姓名": "李四", "成绩": {"数学": 88, "英语": 92}}
    ],
    "计算机 2 班": [
        {"学号": "C003", "姓名": "王五", "成绩": {"数学": 95, "英语": 78}},
        {"学号": "C004", "姓名": "赵六", "成绩": {"数学": 82, "英语": 88}}
    ]
}

# 任务:计算每个班级的平均数学成绩
for class_name, students in class_score.items():
    math_scores = [s["成绩"]["数学"] for s in students]
    avg_math = sum(math_scores) / len(math_scores)
    print(f"{class_name} 数学平均分:{avg_math:.2f}")

# 任务:找出全校数学最高分的学生
all_students = [s for students in class_score.values() for s in students]
top_student = max(all_students, key=lambda x: x["成绩"]["数学"])
print(f"数学最高分:{top_student['姓名']} ({top_student['成绩']['数学']}分)")

与 AI 学习的关联

在机器学习中,字典无处不在:

  • 数据集标签:{"image_001.jpg": "cat", "image_002.jpg": "dog"}
  • 模型配置:{"learning_rate": 0.001, "batch_size": 32, "epochs": 100}
  • 特征工程:存储特征名称到值的映射

接下来你可以学习 元组(tuple)(不可变列表)和 集合(set)(去重、交并差运算),它们与列表、字典共同构成 Python 的四大核心数据结构!

目录

  1. Python 字典(Dict)详解
  2. 1. 创建字典
  3. 空字典
  4. 字面量创建
  5. 从键值对序列创建
  6. 字典推导式
  7. 2. 访问与修改
  8. 访问(通过键)
  9. 修改与添加
  10. 批量更新
  11. 3. 删除操作
  12. 删除并返回值
  13. 删除并返回最后插入的键值对(Python 3.7+ 保持插入顺序)
  14. 删除指定键
  15. 清空
  16. 4. 遍历字典
  17. 遍历键(默认)
  18. 遍历值
  19. 遍历键值对(最常用)
  20. 同时获取索引(enumerate 配合)
  21. 5. 实用技巧与场景
  22. 示例 1:嵌套字典 - 存储复杂信息
  23. 访问嵌套数据
  24. 示例 2:统计频率 - 经典用法
  25. 更优雅的写法(使用 collections.Counter)
  26. 示例 3:按值排序字典
  27. 按分数降序排序(返回列表)
  28. 转回字典(Python 3.7+ 保持排序顺序)
  29. 6. 列表 vs 字典 对比
  30. 综合实战:学生成绩管理系统
  31. 结合列表和字典的实际应用
  32. 任务:计算每个班级的平均数学成绩
  33. 任务:找出全校数学最高分的学生
  34. 与 AI 学习的关联

更多推荐文章

查看全部
  • 基于西门子TIA、PLCSIM Advanced与Kepware实现Fanuc机器人虚拟仿真调试
  • 2026 GitHub 热门 Python 项目:AI 代理与数据工具精选
  • Trae IDE 安装配置及 Java 前端开发实战
  • 零改造迁移实录:2000+存储过程从 SQL Server 迁移至 KingbaseES V9R4C12
  • 无人机公司如何用“第三种语言”拆掉部门墙实现协同
  • LeetCode 92 链表区间反转:递归与哨兵节点实战
  • 基于 yt-dlp 的跨平台视频下载与 AI 摘要工具集
  • Lua 语言入门指南
  • 大模型本地部署与优化实战指南
  • 人工智能在搜索引擎中的目录信息自动抓取
  • Python 中值得注意的细节整理
  • GitHub Copilot 学生认证与激活完整指南
  • 2025 主流 AI IDE 对比:Trae、Copilot、Windsurf、Cursor 选型指南
  • C# 基础学习二十:常用算法与函数
  • 手机端运行 Stable Diffusion 的开源 AI 绘画工具
  • World Monitor:AI 驱动的全球情报仪表盘开源项目
  • Python 连接 MySQL 数据库基础操作与银行管理系统实战
  • 基于 Django 与 Vue 的酒店管理系统设计与实现
  • C++ 多线程同步实战:条件变量(condition_variable)
  • 大语言模型提示词调试的 6 个关键步骤

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • RSA密钥对生成器

    生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online

  • Mermaid 预览与可视化编辑

    基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online

  • 随机西班牙地址生成器

    随机生成西班牙地址(支持马德里、加泰罗尼亚、安达卢西亚、瓦伦西亚筛选),支持数量快捷选择、显示全部与下载。 在线工具,随机西班牙地址生成器在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

  • curl 转代码

    解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online