如何从字典列表中按键提取所有对应值

10次阅读

如何从字典列表中按键提取所有对应值

本文介绍在 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() 方法可进一步增强健壮性,适用于真实场景中的不完全数据。

text=ZqhQzanResources