我有一个Seq [((元组A),(元组B))]
有没有一种简单的方法来组合元组A所以我得到了Seq [(元组A,Seq [元组B])]
I.ve尝试了groupby(x => x.TupleA),但它抛出了一个Mapping Exception:不知道如何序列化元组的键。
答案 0 :(得分:4)
我认为这很有效。使用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)))
如果您希望结果是列表而不是Map,请使用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))))