我有一个Seq((Tuple A),(Tuple B))
有没有简单的方法来分组元组A,这样我就可以得到Seq[(元组A,SeqTuple B)]
I.ve尝试了groupby(x => x.TupleA),但是它抛出了一个映射异常:不知道如何序列化元组的键。
发布于 2017-01-26 05:02:55
我想这行得通。使用groupBy(_._1)根据元组的第一个元素对序列进行分组,并将元组的第二个元素收集到一个列表中:
val s = Seq(((1,2,3), (4,5,6)), ((1,2,3), (5,6,7)), ((2,3,4), (4,5,6)))
s.groupBy(_._1).mapValues(_.map(_._2))
// res1: scala.collection.immutable.Map[(Int, Int, Int),Seq[(Int, Int, Int)]] =
// Map((1,2,3) -> List((4,5,6), (5,6,7)), (2,3,4) -> List((4,5,6)))如果希望结果是列表而不是地图,请使用toList进行转换:
s.groupBy(_._1).mapValues(_.map(_._2)).toList提供:
// List(((1,2,3),List((4,5,6), (5,6,7))), ((2,3,4),List((4,5,6))))https://stackoverflow.com/questions/41861064
复制相似问题