📜  Python – 将单项字典分组为列表值(1)

📅  最后修改于: 2023-12-03 15:04:12.291000             🧑  作者: Mango

Python – 将单项字典分组为列表值

在Python中,有时候我们需要将一个单项字典转换为分组列表值,这时候可以使用groupby函数。groupby函数将可迭代对象分组,根据指定的键值对将数据分成多个组,每个组是一个键+值对。在本文中,我们将介绍如何使用groupby函数将单项字典分组为列表值。

文件准备

首先准备以下的Python脚本,该脚本包含单项字典:

data = [
    {'id': 1, 'status': 'Open', 'category': 'A'},
    {'id': 2, 'status': 'Open', 'category': 'B'},   
    {'id': 3, 'status': 'Closed', 'category': 'A'},
    {'id': 4, 'status': 'Open', 'category': 'C'},
    {'id': 5, 'status': 'Closed', 'category': 'B'},
    {'id': 6, 'status': 'Closed', 'category': 'C'},
    {'id': 7, 'status': 'Open', 'category': 'D'}
]
代码实现
from itertools import groupby

data = [
    {'id': 1, 'status': 'Open', 'category': 'A'},
    {'id': 2, 'status': 'Open', 'category': 'B'},   
    {'id': 3, 'status': 'Closed', 'category': 'A'},
    {'id': 4, 'status': 'Open', 'category': 'C'},
    {'id': 5, 'status': 'Closed', 'category': 'B'},
    {'id': 6, 'status': 'Closed', 'category': 'C'},
    {'id': 7, 'status': 'Open', 'category': 'D'}
]

result = {}
for key, group in groupby(data, lambda x: (x['status'], x['category'])):
    result[key] = list(group)

print(result)

运行代码,会得到以下输出:

{('Open', 'A'): [{'id': 1, 'status': 'Open', 'category': 'A'}],
 ('Open', 'B'): [{'id': 2, 'status': 'Open', 'category': 'B'}],
 ('Closed', 'A'): [{'id': 3, 'status': 'Closed', 'category': 'A'}],
 ('Open', 'C'): [{'id': 4, 'status': 'Open', 'category': 'C'}],
 ('Closed', 'B'): [{'id': 5, 'status': 'Closed', 'category': 'B'}],
 ('Closed', 'C'): [{'id': 6, 'status': 'Closed', 'category': 'C'}],
 ('Open', 'D'): [{'id': 7, 'status': 'Open', 'category': 'D'}]}

输出的结果是一个字典,其中键值是一个元组,包含status和category的值,值是列表,包含相同status和category的所有数据。

总结

在Python中,使用groupby函数可以将一个单项字典转换为分组列表值。groupby函数将可迭代对象分组,根据指定的键值对将数据分成多个组,每个组是一个键+值对。