python的语法类似于lodash分组展开,合并分组操作

from functools import reduce

from pydantic import BaseModel

from dataclasses import dataclass

a = {
    "class1": [{"id": 1, "name": "马良"}, {"id": 2, "name": "李四"}],
    "class2": [{"id": 3, "name": "马青"}, {"id": 4, "name": "王杰"}],
    "class3": [{"id": 5, "name": "赵六"}, {"id": 6, "name": "孙七"}],
}

a1 = [
    {"id": 1, "class": "class1", "name": "马良"},
    {"id": 2, "class": "class1", "name": "李四"},
    {"id": 3, "class": "class2", "name": "马青"},
    {"id": 4, "class": "class2", "name": "王杰"},
    {"id": 5, "class": "class3", "name": "赵六"},
    {"id": 6, "class": "class3", "name": "孙七"},
]

b = [{**item, "class": key} for key, values in a.items() for item in values]


def myAdd(x, y):
    if x.get(y["class"]):
        x[y["class"]].append(y)
    else:
        x[y["class"]] = [y]
    return x


b1 = reduce(myAdd, a1, {})
print(b1)

posted on 2026-06-10 18:34  漫思  阅读(1)  评论(0)    收藏  举报

导航