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

在Flutter中如何将同一事件列表按UUID拆分为多个子列表

按UUID拆分事件列表方案

需求说明

现有结构化事件列表,每个事件包含专属UUID字段,需将原列表按UUID值拆分,相同UUID的事件归入同一个子列表。

示例输入

{
    "events": [
        {
            "uuid": "14B8396A-3B8A-4708-8698-E4CA058F3285"
        },
        {
            "uuid": "14B8396A-3B8A-4708-8698-E4CA058F3285"
        },
        {
            "uuid": "14B8396A-3B8A-4708-8698-E4CA058F3285"
        },
        {
            "uuid": "14B8396A-3B8A-4708-8698-E4CA058F3286"
        }
    ]
}

期望输出

// UUID为14B8396A-3B8A-4708-8698-E4CA058F3285的分组
{
    "events": [
        {
            "uuid": "14B8396A-3B8A-4708-8698-E4CA058F3285"
        },
        {
            "uuid": "14B8396A-3B8A-4708-8698-E4CA058F3285"
        },
        {
            "uuid": "14B8396A-3B8A-4708-8698-E4CA058F3285"
        }
    ]
}

// UUID为14B8396A-3B8A-4708-8698-E4CA058F3286的分组
{
    "events": [
        {
            "uuid": "14B8396A-3B8A-4708-8698-E4CA058F3286"
        }
    ]
}

Python实现代码

from collections import defaultdict

def split_events_by_uuid(origin_events):
    group_map = defaultdict(list)
    for event in origin_events:
        group_map[event["uuid"]].append(event)
    # 按要求格式输出分组
    return [{"events": group} for group in group_map.values()]

# 测试代码
if __name__ == "__main__":
    test_events = [
        {"uuid": "14B8396A-3B8A-4708-8698-E4CA058F3285"},
        {"uuid": "14B8396A-3B8A-4708-8698-E4CA058F3285"},
        {"uuid": "14B8396A-3B8A-4708-8698-E4CA058F3285"},
        {"uuid": "14B8396A-3B8A-4708-8698-E4CA058F3286"}
    ]
    result = split_events_by_uuid(test_events)
    for item in result:
        print(item)

逻辑说明

  • 用defaultdict做临时分组容器,省去手动判断UUID是否已存在分组的冗余代码
  • 遍历原事件列表时直接按UUID字段将事件存入对应分组
  • 最终遍历所有分组,按需求封装为以events为键的对象即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 05:18:01