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

Scala如何用groupBy和mapValues将元组列表转为值为Int列表的Map

解决方案

你可以直接搭配groupBy和mapValues实现需求,示例代码如下:

val result = temp.groupBy(_._1).mapValues(_.map(_._2))

如果使用的是Scala 2.12及更早版本,mapValues默认返回惰性视图,若需要立即计算得到严格的Map结果,可以追加调用.toMap:

val result = temp.groupBy(_._1).mapValues(_.map(_._2)).toMap

如果你使用Scala 2.13及以上版本,还可以用更简洁的groupMap方法一步完成操作,性能也更优:

val result = temp.groupMap(_._1)(_._2)
方法说明
  • groupBy(_._1):按元组的第一个元素(字符串值)分组,得到的Map值为对应分组下的全部元组列表
  • mapValues(_.map(_._2)):对每个分组的元组列表做转换,只保留每个元组的第二个元素(整数值)
  • groupMap是Scala 2.13新增的API,相当于把groupBy和mapValues的逻辑合并,避免生成中间的元组列表,执行效率更高

运行以上代码得到的结果就是你需要的格式:

Map(string1 -> List(int1, int3), string2 -> List(int2))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 17:06:02