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

Dart中按genere字段分组List<Map>数据的技术问询

按genere字段分组List数据的实现方法

需求说明

给定如下结构的电影数据列表:

List<dynamic> lists = [
  {"name":"SpiderMan", "genere":"superhero"},
  {"name":"Batman", "genere":"superhero"},
  {"name":"Notebook", "genere":"romance"},
  {"name":"Titanic", "genere":"romance"}
];

需要将其按genere字段分组,最终得到包含单个分组键值对Map的列表格式。

实现代码

可以通过Dart的fold方法完成分组逻辑,再转换为目标格式:

void main() {
  List<dynamic> lists = [
    {"name":"SpiderMan", "genere":"superhero"},
    {"name":"Batman", "genere":"superhero"},
    {"name":"Notebook", "genere":"romance"},
    {"name":"Titanic", "genere":"romance"}
  ];

  // 第一步:按genere分组生成Map
  Map<String, List<dynamic>> groupedMap = lists.fold({}, (acc, item) {
    final genere = item['genere'] as String;
    acc.putIfAbsent(genere, () => []).add(item);
    return acc;
  });

  // 第二步:转换为目标List格式
  List<Map<String, List<dynamic>>> result = groupedMap.entries
      .map((entry) => {entry.key: entry.value})
      .toList();

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

结果说明

运行上述代码后,result的结构与需求一致:

[
  {"romance": [{"name":"Notebook","genere":"romance"},{"name":"Titanic","genere":"romance"}]},
  {"superhero": [{"name":"SpiderMan","genere":"superhero"},{"name":"Batman","genere":"superhero"}]}
]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 13:20:32