📅  最后修改于: 2023-12-03 15:04:12.291000             🧑  作者: Mango
在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函数将可迭代对象分组,根据指定的键值对将数据分成多个组,每个组是一个键+值对。