
本文介绍如何使用 Python 列表推导式高效提取嵌套字典结构中特定键(如 "code")的所有值,适用于 dict → list → dict 的典型嵌套场景。
本文介绍如何使用 python 列表推导式高效提取嵌套字典结构中特定键(如 "code")的所有值,适用于 `dict → list → dict` 的典型嵌套场景。
在实际开发中,我们常遇到类似如下结构的嵌套数据:外层是字典,其中某个键(如 "privileges")对应一个字典列表,而我们需要批量提取每个子字典中某个字段(如 "code")的值。此时,无需借助 json.loads()(该函数仅用于解析 JSON 字符串,而示例中 X 已是原生 Python 字典),直接通过索引与列表推导即可简洁、高效地完成提取。
以给定数据为例:
X = {
"privileges": [
{"ns": "", "set": "", "code": 0},
{"ns": "", "set": "", "code": 1},
{"ns": "", "set": "", "code": 3},
{"ns": "", "set": "", "code": 12},
{"ns": "", "set": "", "code": 14},
],
"whitelist": [],
"read_quota": 0,
"write_quota": 0,
}
只需一行代码即可获取所有 "code" 值构成的列表:
codes = [p["code"] for p in X["privileges"]] print(codes) # 输出: [0, 1, 3, 12, 14]
若需逐行打印(如题目要求的格式),可进一步遍历输出:
for code in codes:
print(code)
✅ 注意事项:
- 确保 X["privileges"] 存在且为列表类型,否则会触发 KeyError 或 TypeError;
- 若部分子字典可能缺失 "code" 键,建议添加安全访问逻辑,例如使用 .get() 方法并提供默认值:
codes = [p.get("code", -1) for p in X.get("privileges", [])] - 对于更深层嵌套或动态路径,可考虑使用 jsonpath-ng 等库,但本例中纯 Python 内置语法已足够简洁高效。
总之,列表推导式是 Python 中处理此类结构化数据提取任务的首选方式——语义清晰、性能优异、代码可读性强。











