字典中存字典:更复杂的结构化数据 如果每个用户还有更详细的信息可以把字典嵌套在字典里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()一组对象可以用“列表中存字典”一个字段有多个值可以用“字典中存列表”更复杂的数据可以用“字典中存字典”但不要一开始就嵌套太深