You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何合并列表中team键重复的复杂嵌套字典

合并团队资产字典列表

我有一个字典列表,每个字典对应一个团队及其资产。同一团队可能对应多个字典,每个字典包含该团队的部分资产类型。需要将同一团队的字典合并,每个团队仅保留一个字典,整合其所有的资产类型。

原始数据

list_of_dicts = [
    {
        "team": "X",
        "description": "A description of X",
        "types": [
            {
                "type": "TYPEA",
                "assets": {
                    "high_value": [
                        {"id": "asset_1_id", "name": "asset_1_name"},
                        {"id": "asset_2_id", "name": "asset_2_name"},
                    ],
                    "low_value": [
                        {"id": "asset_3_id", "name": "asset_3_name"},
                        {"id": "asset_4_id", "name": "asset_4_name"},
                    ],
                },
            },
            {
                "type": "TYPEB",
                "assets": {
                    "high_value": [
                        {"id": "asset_1_id", "name": "asset_1_name"},
                        {"id": "asset_2_id", "name": "asset_2_name"},
                    ],
                    "low_value": [
                        {"id": "asset_3_id", "name": "asset_3_name"},
                        {"id": "asset_4_id", "name": "asset_4_name"},
                    ],
                },
            },
        ],
    },
    {
        "team": "X",
        "description": "A description of X",
        "types": [
            {
                "type": "TYPEC",
                "assets": {
                    "high_value": [
                        {"id": "asset_1_id", "name": "asset_1_name"},
                        {"id": "asset_2_id", "name": "asset_2_name"},
                    ],
                    "low_value": [
                        {"id": "asset_3_id", "name": "asset_3_name"},
                        {"id": "asset_4_id", "name": "asset_4_name"},
                    ],
                },
            }
        ],
    },
]

实现代码

merged_teams = {}
for team_item in list_of_dicts:
    team_name = team_item["team"]
    if team_name not in merged_teams:
        # 复制当前团队字典,避免修改原数据
        merged_teams[team_name] = team_item.copy()
        # 独立复制types列表,防止后续操作影响原数据
        merged_teams[team_name]["types"] = team_item["types"].copy()
    else:
        # 将当前团队的types追加到已合并的types列表中
        merged_teams[team_name]["types"].extend(team_item["types"])

# 转换为目标列表格式
result_list = list(merged_teams.values())

结果说明

执行上述代码后,result_list即为每个团队仅对应一个字典、整合所有资产类型的结果,示例输出如下:

[
    {
        "team": "X",
        "description": "A description of X",
        "types": [
            {"type": "TYPEA", "assets": {...}},
            {"type": "TYPEB", "assets": {...}},
            {"type": "TYPEC", "assets": {...}},
        ],
    }
]

内容的提问来源于stack exchange,提问作者James

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 05:07:19