Scala 如何按列表中的键分组
我在Scala中有一个列表,我想按一个键对其进行分组,并汇总每个键的值:Scala 如何按列表中的键分组,scala,Scala,我在Scala中有一个列表,我想按一个键对其进行分组,并汇总每个键的值: val l = List(("abc",1),("abc",2),("cbe",5),("cab",1)) 我尝试了以下代码: l.groupBy(identity).mapValues(_.sum) 但出现以下错误: error: type mismatch; found : scala.collection.immutable.Map[(String, Int),Int] required: Seq[(S
val l = List(("abc",1),("abc",2),("cbe",5),("cab",1))
我尝试了以下代码:
l.groupBy(identity).mapValues(_.sum)
但出现以下错误:
error: type mismatch;
found : scala.collection.immutable.Map[(String, Int),Int]
required: Seq[(String, Int)]
它可能已经在stackoverflow中得到了回答,但您需要对list的值进行分组,然后求和
scala> val l = List(("abc",1),("abc",2),("cbe",5),("cab",1))
.groupBy(_._1)
.map { case (k, v) => k -> v.map { _._2}.sum}
l: scala.collection.immutable.Map[String,Int] = HashMap(cbe -> 5, abc -> 3, cab -> 1)
给定列表:
scala> list.groupBy(_._1).mapValues(_.map(_._2).sum)
res13: scala.collection.immutable.Map[String,Int] = Map(cab -> 1, abc -> 3, cbe -> 5)
使用,
在Scala中回复:
scala> list.groupBy(_._1).mapValues(_.map(_._2).sum)
res13: scala.collection.immutable.Map[String,Int] = Map(cab -> 1, abc -> 3, cbe -> 5)
如果您正在尝试scala REPL,请将所有内容放在一行中,这样做可能会很容易。这是直接从我的回复,所以它必须工作
scala> list.groupBy(_._1).mapValues(_.map(_._2).sum)
res13: scala.collection.immutable.Map[String,Int] = Map(cab -> 1, abc -> 3, cbe -> 5)