通过Python中的可重复键对字典的JSON数组进行分组和排序

艾尔·D

我有一个json,它是字典列表,看起来像这样:

我从MySQL用pymysql获取它

[{
    "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"
}]

我需要对其进行分组,以便每个“名称”只有一个字典,并且将包含该名称下所有分组的列表。像这样的东西:

[{
    "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)

它应该以所需的格式打印数据。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在python3中按姓氏对全名字典键进行排序和分组?

在 Python 中,尝试通过 lambda 和字典键对扑克牌进行排序

通过在python中对字典进行排序来提取键列表

在分组字典中对子数组进行排序

如何在python中对字典val和键进行排序

Python如何通过字典键对嵌套字典列表进行排序?

在python中对字典键进行排序

通过多个键对字典列表进行分组和汇总

在 python 2.7 中对字典数组进行分组

按项目字典中的键对python字典进行分组

用两个键(频率和字典顺序)对Python中的字典进行排序

如何在重复一些数据的php数组中对数据进行排序和分组?

根据键和值对字典数组进行排序

通过定义排序顺序,基于子字典键对python字典键进行排序

根据其他字典键在Python中对字典进行排序

对字典中的键进行排序

对Python中的dict进行分组和排序

如果看到重复值,如何通过键对对象数组进行排序,然后在 javascript 中通过另一个键对它们进行排序?

按特定键的值对数组中的字典进行排序

在Julia中按多个键对字典数组进行排序

通过键的多个属性对字典进行分组

如何通过多个键对JSON数组数据进行分组

在python中对字典进行排序和汇总

如何通过PHP中的多个键对数组进行分组

对字典列表进行排序和分组

Python字典/ json重复键

对键未知的字典数组进行排序

如何在Python中对字典键进行排序

如何合并字典数组中的重复键python