《Python编程 从入门到实践》第6章:字典创建、遍历与嵌套用法详解
开篇这篇解决什么问题列表适合存“一组同类数据”比如一批任务名、一组文件名、一串用户名称。但如果我要描述一个用户只写成列表就不太直观user [lunzi, active, 7]这段代码能跑但过几天再看很容易忘记active和7分别代表什么。字典更适合这种场景user { username: lunzi, status: active, task_count: 7, }这样一看就清楚左边是字段名右边是具体值。我自己在工作里理解字典时最早也是从“配置项”和“用户信息”这类场景开始的。只要数据开始有字段、有状态、有层级字典就会变得很自然。本篇你会学到什么如何创建字典并通过键访问对应的值如何添加、修改、删除字典里的键值对items()、keys()、values()分别适合什么遍历场景如何理解字典列表、字典中存列表、字典中存字典常见的KeyError怎么排查什么时候适合用get()场景案例维护一份用户信息表这一篇不用外星人、比萨这些例子做主线我们换成更贴近实际工作的场景维护一份简单的用户信息表。假设我们要记录用户的基础信息、状态、权限和最近处理的任务可以先从一个用户开始user { username: alice, role: admin, status: active, task_count: 5, } print(user[username]) print(user[role])这就是字典最核心的用法用一个明确的“键”找到对应的“值”。如果后续用户信息变多我们可以把多个字典放进列表里users [ {username: alice, role: admin, status: active}, {username: bob, role: developer, status: inactive}, {username: charlie, role: tester, status: active}, ] for user in users: print(user[username] - user[status])这类结构在实际脚本里很常见一组用户、一组任务、一组配置、一组接口返回数据都可以这样组织。知识点拆解1. 创建字典字典使用{}表示里面是一组键值对user { username: alice, role: admin, status: active, }可以把它理解成一张小表键值usernamealiceroleadminstatusactive键通常用字符串值可以是字符串、数字、列表、另一个字典等。2. 访问字典中的值访问字典时用字典名[键]user { username: alice, role: admin, task_count: 5, } print(user[username]) print(user[task_count])输出结果alice 5这个写法很直接但有一个前提这个键必须存在。如果键不存在就会报KeyError。3. 添加键值对字典可以在创建之后继续添加内容user { username: alice, role: admin, } user[status] active user[task_count] 5 print(user)这在写脚本时很常见先拿到一部分信息后面再补充状态、统计结果或处理结果。4. 修改字典中的值修改字典也使用同样的写法user { username: alice, status: active, } user[status] inactive print(user[status])如果把字典看成一份用户档案修改值就像更新用户状态。5. 删除键值对删除字典里的某个字段用deluser { username: alice, role: admin, temporary_token: abc123, } del user[temporary_token] print(user)注意del删除后这个键值对就没有了。后面如果还访问user[temporary_token]会报错。6. 遍历所有键值对items()如果想把字典里的键和值都拿出来用items()user { username: alice, role: admin, status: active, } for key, value in user.items(): print(key : value)输出结果username: alice role: admin status: active这个方法适合做配置检查、日志输出、字段展示。7. 遍历所有键keys()如果只关心有哪些字段可以遍历键user { username: alice, role: admin, status: active, } for key in user.keys(): print(key)其实直接写for key in user:也可以默认遍历的就是键for key in user: print(key)初学阶段建议先写清楚一点用keys()更容易看出意图。8. 遍历所有值values()如果只关心值用values()favorite_languages { alice: python, bob: java, charlie: python, } for language in favorite_languages.values(): print(language)如果想去重可以配合set()for language in set(favorite_languages.values()): print(language)这里set()会把重复的值合并掉。比如多个用户都喜欢 Python最后只显示一次。9. 字典列表一组结构相似的数据当你有多个用户每个用户都有自己的字段时可以使用“列表中存字典”users [ {username: alice, role: admin, status: active}, {username: bob, role: developer, status: inactive}, {username: charlie, role: tester, status: active}, ] for user in users: if user[status] active: print(user[username] is active.)这类结构在实际工作里非常常见。比如批量用户信息批量任务列表批量订单数据批量接口返回结果10. 字典中存列表一个字段对应多个值有时候一个字段不是单个值而是一组值。比如一个用户可以有多个权限user { username: alice, permissions: [read, write, delete], } print(user[username] has permissions:) for permission in user[permissions]: print(- permission)这比写成permission1、permission2、permission3更清楚也更方便循环处理。11. 字典中存字典更复杂的结构化数据如果每个用户还有更详细的信息可以把字典嵌套在字典里users { alice: { role: admin, status: active, location: beijing, }, bob: { role: developer, status: inactive, location: shanghai, }, } for username, info in users.items(): print(username) print( role: info[role]) print( status: info[status]) print( location: info[location])嵌套结构不要一开始就写得太复杂。我的习惯是先看数据要表达什么再决定用列表还是字典。如果只是“一组值”优先列表如果是“一个对象的多个属性”优先字典如果是“一组对象”通常就是列表里放字典。初学者容易踩的坑问题常见原因建议KeyError访问了不存在的键先用in判断或者用get()分不清键和值不知道该遍历keys()还是values()要字段名用keys()要字段值用values()两个都要用items()嵌套结构看不懂列表和字典混在一起先一层一层看外层是什么内层是什么直接赋值导致联动修改两个变量指向同一个字典需要复制时用copy()复杂结构再考虑deepcopy字典结构太随意每条数据字段不统一同一批数据尽量保持相同字段KeyError怎么排查这是字典里最常见的错误user { username: alice, role: admin, } print(user[status])因为status不存在所以会报错。更稳一点的写法是if status in user: print(user[status]) else: print(status is missing)也可以用get()status user.get(status, unknown) print(status)get()的第二个参数是默认值。键不存在时不会报错而是返回默认值。工作里能怎么用字典在工作里特别常见因为很多业务数据天然就是键值对。场景字典可以怎么用配置文件存接口地址、超时时间、重试次数用户信息存用户名、角色、状态、权限任务管理存任务名称、负责人、截止时间、执行状态接口数据JSON 转成 Python 后通常就是字典或列表嵌套字典日志统计用字段保存次数、状态、耗时等结果举个更贴近脚本的小例子task { name: daily_report, owner: alice, status: pending, retry_count: 0, } if task[status] pending: print(Run task: task[name]) task[status] running这个例子不复杂但已经能体现字典的价值它让一条任务数据变得更清楚也更容易扩展。小结字典用来保存键值对适合表达“一个对象的多个属性”访问字典用dict[key]但键不存在时会报KeyError添加和修改都使用dict[key] value删除键值对用del dict[key]遍历键值对用items()遍历键用keys()遍历值用values()一组对象可以用“列表中存字典”一个字段有多个值可以用“字典中存列表”更复杂的数据可以用“字典中存字典”但不要一开始就嵌套太深

相关新闻

【数据结构】排序算法(四):归并排序、计数排序与基数排序——突破 O(n log n) 的底层密码

【数据结构】排序算法(四):归并排序、计数排序与基数排序——突破 O(n log n) 的底层密码

目录一、 归并排序 (Merge Sort)1.1 算法思想1.2 代码实现1.3 运行推演1.4 复杂度分析二、 计数排序 (Counting Sort)2.1 算法思想2.2 具体步骤推演2.3 复杂度分析三、 基数排序 (Radix Sort)3.1 算法思想3.2 LSD 基数排序步骤推演(以十进制为例)3.3 复杂…

2026/6/30 7:03:29阅读更多 →
如何快速重置Cursor免费试用:3步解决请求限制的完整指南

如何快速重置Cursor免费试用:3步解决请求限制的完整指南

如何快速重置Cursor免费试用:3步解决请求限制的完整指南 【免费下载链接】go-cursor-help 解决Cursor在免费订阅期间出现以下提示的问题: Your request has been blocked as our system has detected suspicious activity / Youve reached your trial request limit…

2026/6/30 7:03:29阅读更多 →
【2024最新版】ChatGPT API接入避雷图谱:v1/chat/completions接口的12个隐性坑位与官方文档未标注的兼容性断点

【2024最新版】ChatGPT API接入避雷图谱:v1/chat/completions接口的12个隐性坑位与官方文档未标注的兼容性断点

更多请点击: https://codechina.net 第一章:ChatGPT API 接入指南 接入 ChatGPT API 是构建智能对话能力的基础环节,需完成身份认证、请求构造与响应解析三个核心步骤。OpenAI 官方提供 RESTful 接口,支持多种编程语言调用&#…

2026/6/30 6:58:28阅读更多 →
本地文件包含漏洞深度解析:从原理到实战修复

本地文件包含漏洞深度解析:从原理到实战修复

1. 项目概述:从一次“意外”访问说起那天下午,我正在排查一个内部管理系统的异常日志,系统管理员反馈说某个页面的访问日志里出现了奇怪的路径参数。我顺着日志里的请求路径尝试访问,本来应该显示用户配置文件的页面,却…

2026/6/30 8:08:34阅读更多 →
高速全差分放大器THS4500评估板实战:PCB布局与信号完整性设计精要

高速全差分放大器THS4500评估板实战:PCB布局与信号完整性设计精要

1. 项目概述与核心价值如果你正在设计一个高速模拟信号链,比如驱动一个高速ADC,或者处理通信系统中的射频信号,那么“全差分放大器”这个器件你一定不陌生。它不像传统的单端运放,输出一个对地的电压,而是同时输出一对…

2026/6/30 8:08:34阅读更多 →
Java正则表达式ReDos攻击原理、复现与防御实战指南

Java正则表达式ReDos攻击原理、复现与防御实战指南

1. 项目概述:当“高效”的正则变成“拒绝服务”的武器 在Java开发中,正则表达式是我们处理字符串匹配、验证和提取的“瑞士军刀”。无论是验证用户输入的邮箱格式,还是从日志文件中提取特定字段,正则表达式都以其强大的表现力&…

2026/6/30 8:08:34阅读更多 →
小龙虾技能-05-devops-cloud-05_Monitoring_监控告警

小龙虾技能-05-devops-cloud-05_Monitoring_监控告警

DevOps与云原生 | Monitoring-stack 全栈监控告警 Skill 完全指南 CSDN 发布级 | 作者:Marvis AI | 分类:DevOps & 云原生 | 阅读时长:约 12 分钟 文章标签:小龙虾智能体、小龙虾技能、智能工具、openclaw、05_Monitoring 一、概述 在现代 DevOps 和云原生架构中,可观…

2026/6/30 8:08:34阅读更多 →
澳洲留学签证材料翻译去哪翻译?办理澳洲留学签证都需要翻译哪些材料?需要多少钱?

澳洲留学签证材料翻译去哪翻译?办理澳洲留学签证都需要翻译哪些材料?需要多少钱?

内容摘要:办理澳洲留学签证需翻译学术材料(成绩单、学位证)、资金证明(银行流水、存款证明、营业执照)、身份证明(户口本)及医疗记录 。翻译应选择具备ISO 17100认证及翻译资质的线上平台&#…

2026/6/30 8:08:34阅读更多 →
从TI TPA6012A4EVM评估板学习立体声D类功放电路设计与PCB布局

从TI TPA6012A4EVM评估板学习立体声D类功放电路设计与PCB布局

1. 项目概述与核心价值如果你正在设计一个需要高品质音频输出的便携式设备,比如蓝牙音箱、便携游戏机或者车载多媒体系统,那么音频功率放大器的选型和电路设计绝对是你绕不开的核心环节。音频功放的好坏,直接决定了最终产品的声音是“能响”还…

2026/6/30 8:03:33阅读更多 →
AI Coding 六个月真实ROI账本:产品经理的血泪教训,研发的冷静忠告

AI Coding 六个月真实ROI账本:产品经理的血泪教训,研发的冷静忠告

6个月前的2025年12月,Boris Cherny 公开宣布自己卸载了 IDE。一时间,Vibe Coding 成了全行业最热的话题。6个月后,当我们回过头来拉一份真实账本,发现事情远没有"一句话生成一个App"那么浪漫。本文从产品经理和研发两个…

2026/6/30 4:03:30阅读更多 →
审计来了,数据权限全开——审计走了,怎么确保权限全部关掉?

审计来了,数据权限全开——审计走了,怎么确保权限全部关掉?

引言:审计结束三个月了,审计员的权限还没关某城商行每年按照监管要求开展至少一次数据安全审计。审计期间,内审部门需要抽样检查各类业务数据——交易流水、客户信息、员工操作日志、权限配置记录。这些数据分布在不同系统中,审计…

2026/6/30 4:36:27阅读更多 →
为什么你需要Destiny 2 Solo Enabler:技术原理与实战指南

为什么你需要Destiny 2 Solo Enabler:技术原理与实战指南

为什么你需要Destiny 2 Solo Enabler:技术原理与实战指南 【免费下载链接】Destiny-2-Solo-Enabler Repo containing the C# and XAML code for the D2SE program. Included is also the dependency for the program, and image asset. 项目地址: https://gitcode…

2026/6/30 0:02:58阅读更多 →
第六章:PowerPoint 2010 核心功能与实战应用 —— 从入门到精通

第六章:PowerPoint 2010 核心功能与实战应用 —— 从入门到精通

1. PowerPoint 2010基础操作全攻略 刚接触PowerPoint 2010时,很多人会被它复杂的界面吓到。其实只要掌握几个核心区域,就能快速上手。我最开始用PPT时,经常找不到功能按钮在哪,后来发现主要操作都集中在顶部功能区。 工作窗口主要…

2026/6/30 0:02:58阅读更多 →
XGBoost超参数实战:从理论到调优策略

XGBoost超参数实战:从理论到调优策略

1. XGBoost超参数基础认知 第一次接触XGBoost时,我被它那密密麻麻的参数列表吓到了。这感觉就像面对一架波音747的驾驶舱——每个按钮都可能有神奇的效果,但按错了就可能坠机。经过多年实战,我发现其实掌握十几个核心参数就能解决90%的问题。…

2026/6/30 0:02:59阅读更多 →