Python如何将字典列表按id字段分组拆分生成对应子列表
实现方案
注意事项
- 不要将变量命名为
dict,这是Python内置关键字,会覆盖原有类型导致后续语法报错 - 你给出的示例字典数据缺少字符串引号,实际运行时需要补全语法。
代码实现
方法1:使用collections.defaultdict(推荐,写法更简洁)
from collections import defaultdict # 补全语法后的原始数据 original_list = [ {"name": "aa", "age": 12, "id": 121}, {"name": "bb", "age": 13, "id": 122}, {"name": "cc", "age": 11, "id": 121}, {"name": "dd", "age": 15, "id": 122} ] result = defaultdict(list) for item in original_list: group_id = item.pop("id") result[group_id].append(item) # 输出验证 for group_id, group_data in result.items(): print(f"{group_id} = {group_data}")
方法2:使用普通字典实现(无需导入依赖)
original_list = [ {"name": "aa", "age": 12, "id": 121}, {"name": "bb", "age": 13, "id": 122}, {"name": "cc", "age": 11, "id": 121}, {"name": "dd", "age": 15, "id": 122} ] result = {} for item in original_list: group_id = item.pop("id") if group_id not in result: result[group_id] = [] result[group_id].append(item)
结果说明
运行后result是一个字典,键为id的取值(121、122),值就是你需要的去掉id字段的分组列表,直接通过result[121]、result[122]即可获取对应分组数据。
内容的提问来源于stack exchange,提问作者Kathan Vyas
相关产品推荐
相关产品推荐

