斯卡拉(Scala)从两个清单制作地图

时间:2018-07-07 22:48:27

标签: scala list

我有两个列表

val lst1 = List(1, 1, 1, 1, 1, 2, 2, 3, 3, 3)
val lst2 = List(12, 13, 12, 15, 16, 21, 23, 30, 32, 13)

我想制作一个这样的地图,而lst2中值的顺序在地图中不变:

  

Map(1->(12,13,12,15,16),2->(21,23),3->(30,32,13))

我该怎么做?

1 个答案:

答案 0 :(得分:3)

这是使用zipgroupBy的一种方法:

(lst1 zip lst2).groupBy(_._1).mapValues(_.map(_._2))
// res1: scala.collection.immutable.Map[Int,List[Int]] = Map(
//   2 -> List(21, 23), 1 -> List(12, 13, 12, 15, 16), 3 -> List(30, 32, 13)
// )