
本文介绍在 python 中如何高效地从包含多个字典的列表中,按指定键批量提取所有值,并生成独立的值列表。
当处理结构化数据(如 API 响应、JSON 解析结果或数据库查询记录)时,我们常遇到形如 data = [{'name': 'Alessandra', 'age': 24}, {'name': 'Sasha', 'age': 37}, {'name': 'Jason', 'age': 42}] 的字典列表。若需将相同键(如 'name'、'age')下的所有值分别聚合为独立列表,最简洁、Pythonic 的方式是使用列表推导式:
data = [{'name': 'Alessandra', 'age': 24}, {'name': 'Sasha', 'age': 37}, {'name': 'Jason', 'age': 42}]
names = [item['name'] for item in data]
ages = [item['age'] for item in data]
print(names) # ['Alessandra', 'Sasha', 'Jason']
print(ages) # [24, 37, 42]✅ 优势说明:
- 简洁高效,无需导入额外模块;
- 时间复杂度为 O(n),一次遍历即可完成提取;
- 可读性强,语义清晰(“对每个字典取其 name 值”)。
⚠️ 注意事项:
- 若字典中可能缺失目标键(如某项无 'age'),直接访问 item['age'] 会触发 KeyError。此时建议改用 item.get('age')(返回 None)或提供默认值:item.get('age', 0);
- 如需动态提取多个键,可封装为函数提升复用性:
def extract_values(data_list, key):
return [d.get(key) for d in data_list]
names = extract_values(data, 'name')
ages = extract_values(data, 'age')总结:列表推导式是提取字典列表中同键值的标准解决方案,兼顾性能与可维护性;配合 .get() 方法可进一步增强健壮性,适用于真实场景中的不完全数据。










