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

如何将同键的Map合并为键对应值列表的Map组成的列表?

解决方案

实现思路

核心是先通过临时Map聚合相同键的所有值,再将聚合后的结构转换为你期望的列表格式:

  1. 初始化临时Map,存储键对应的数值列表
  2. 遍历输入列表,提取每个小Map的键和值,将值追加到对应键的列表中
  3. 把临时Map的每一项转换为单个键的Map,收集成最终列表

代码实现(Dart)

void main() {
  List<Map<int, dynamic>> myMap = [
    {1: 88550},
    {1: 89887},
    {1: 93297},
    {1: 93297},
    {1: 93297},
    {1: 94863},
    {2: 95141},
    {2: 95141},
    {2: 110110},
  ];

  // 临时聚合Map
  Map<int, List<dynamic>> tempAggregate = {};

  for (var item in myMap) {
    // 取出每个小Map的唯一键和值
    int key = item.keys.first;
    dynamic value = item[key];
    
    // 聚合值:存在则追加,不存在则新建列表
    if (tempAggregate.containsKey(key)) {
      tempAggregate[key]!.add(value);
    } else {
      tempAggregate[key] = [value];
    }
  }

  // 转换为期望的输出格式
  List<Map<int, dynamic>> result = tempAggregate.entries.map((entry) {
    return {entry.key: entry.value};
  }).toList();

  // 打印结果
  print(result);
}

输出结果

运行后会得到:

[{1: [88550, 89887, 93297, 93297, 93297, 94863]}, {2: [95141, 95141, 110110]}]

如果需要对列表去重,可以修改值追加逻辑:

// 替换原追加代码
if (!tempAggregate[key]!.contains(value)) {
  tempAggregate[key]!.add(value);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 02:00:03