现有一个由多个字典构成的列表,根据字典某一字段进行分组
result=[
{"id":"1","groupName":"A","value2":"678768"},
{"id":"3","groupName":"B","value2":"SDFSDF"},
{"id": "5", "groupName": "C", "value2": "546456"},
{"id":"4","groupName":"B","value2":"234234"},
{"id": "2", "groupName": "A", "value2": "SDFSDF"},
{"id":"6","groupName":"C","value2":"UIKHJK"},
]
1,首先根据分组字段groupName 进行排序
result= sorted(result, key=itemgetter('groupName'))
result[{
'id': '1',
'groupName': 'A',
'value2': '678768'
}, {
'id': '2',
'groupName': 'A',
'value2': 'SDFSDF'
}, {
'id': '3',
'groupName': 'B',
'value2': 'SDFSDF'
}, {
'id': '4',
'groupName': 'B',
'value2': '234234'
}, {
'id': '5',
'groupName': 'C',
'value2': '546456'
}, {
'id': '6',
'groupName': 'C',
'value2': 'UIKHJK'
}]
2,使用groupby方法进行分组
groups = {}
for key, group in groupby(result, key=itemgetter('groupName')):
groups[key] = list(group)
3,结果
{
'A': [{
'id': '1',
'groupName': 'A',
'value2': '678768'
}, {
'id': '2',
'groupName': 'A',
'value2': 'SDFSDF'
}],
'B': [{
'id': '3',
'groupName': 'B',
'value2': 'SDFSDF'
}, {
'id': '4',
'groupName': 'B',
'value2': '234234'
}],
'C': [{
'id': '5',
'groupName': 'C',
'value2': '546456'
}, {
'id': '6',
'groupName': 'C',
'value2': 'UIKHJK'
}]
}