我有一个json,它是一个字典列表,如下所示:
我用pymysql从MySQL获取它
[{
"id": "123",
"name": "test",
"group": "test_group"
},
{
"id": "123",
"name": "test",
"group": "test2_group"
},
{
"id": "456",
"name": "test2",
"group": "test_group2"
},
{
"id": "456",
"name": "test2",
"group": "test_group3"
}]
我需要对它进行分组,以便每个“名称”只有一个dict,它将包含一个以此名称命名的所有组的列表。这样的事情:
[{
"id": "123",
"name": "test",
"group": ["test2_group", "test_group"]
},
{
"id": "456",
"name": "test2",
"group": ["test_group2", "test_group3"]
}]
我想得到一些帮助,谢谢!
您可以使用itertools.groupby进行数据分组。虽然我不保证下面的解决方案是最短的方式,但它应该做的工作。
# Your input data
data = []
from itertools import groupby
res = []
key_func = lambda k: k['id']
for k, g in groupby(sorted(data, key=key_func), key=key_func):
obj = { 'id': k, 'name': '', 'group': []}
for group in g:
if not obj['name']:
obj['name'] = group['name']
obj['group'].append(group['group'])
res.append(obj)
print(res)
它应该以所需的格式打印数据。