如何在Scala中加入两个列表?

时间:2016-02-16 12:56:21

标签: list scala dictionary

我们有两个清单:

val a:List[(String, Int, Int)] = List(("apple", 3, 25),("orange", 4, 47))

val b:List[(String, String)] = List(("mango", "25"),("orange", "50"))

加入a和b得到的最佳方法是:

val c : List[(String, Int, Int, String)] = List(("orange", 4, 47, "50"))

3 个答案:

答案 0 :(得分:8)

迭代第一个列表并在地图mb中查找第二个列表的值。如果.flatMap返回.getNone会使条目消失。

 val mb = b.toMap

 a.flatMap{case (ka,va,vva) => mb.get(ka).map(vb => (ka,va,vva,vb))}

答案 1 :(得分:1)

您可以连接列表,然后按元组的第一个元素对它们进行分组:

val groupedTuples: Map[String, List[(String, String)]] = (a ++ b).groupBy(_._1)
val c: Map[String, List[String]] =  groupedTuples.mapValues(_.map(_._2))

这将导致

Map(mango -> List(25), orange -> List(4, 50), apple -> List(3))

答案 2 :(得分:-1)

如果l1l2是两个列表:l1:::l2