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

Scala中对元组列表使用groupBy后如何调整输出格式?

解决Scala元组列表分组后提取指定元素的问题

嘿,我明白你的需求啦——你现在用groupBy分组后,得到的是包含完整元组的列表,但你只想保留每个元组里的字符串部分对吧?很简单,只需要在分组之后加一步映射处理就可以了。

先回顾一下你原来的代码:

val a = List((1,"a"), (2,"b"), (3,"c"), (1,"A"), (2,"B"))
a.groupBy(e => e._1)

这段代码确实会把相同键的完整元组归到一起,所以输出里每个分组都是元组列表。

要得到你期望的结果,我们可以在groupBy之后,用mapValues方法对每个分组的列表做转换,提取出每个元组的第二个元素:

val a = List((1,"a"), (2,"b"), (3,"c"), (1,"A"), (2,"B"))
val desiredResult = a.groupBy(_._1).mapValues(group => group.map(_._2))

或者更简洁的写法(利用Scala的下划线语法):

val desiredResult = a.groupBy(_._1).mapValues(_.map(_._2))

执行这段代码后,你会得到这样的输出:

Map(2 -> List(b, B), 1 -> List(a, A), 3 -> List(c))

这里的类型其实是Map[Int, List[String]],正好匹配你期望的输出结构(你之前写的期望类型里的List[(Int, String)]是笔误哦,实际应该是字符串列表)。

简单拆解一下逻辑:

  • groupBy(_._1):按元组的第一个Int值分组,得到键为Int、值为元组列表的Map。
  • mapValues(_.map(_._2)):对每个分组的元组列表,遍历每个元组并提取第二个元素(也就是字符串部分),把元组列表转换成字符串列表。

这样就完美得到你想要的结果啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 07:13:02