Scala - 按键加入元组列表

Jav*_*osa 2 scala

我正在寻找一种在 Scala 中加入两个元组列表的方法,以获得与 Apache spark 使用 join 函数给我的结果相同的结果。示例:有两个元组列表,例如我们:

val l1 = List((1,1),(1,2),(2,1),(2,2))
l1: List[(Int, Int)] = List((1,1), (1,2), (2,1), (2,2))

val l2 = List((1,(1,2)), (2,(2,3)))
l2: List[(Int, (Int, Int))] = List((1,(1,2)), (2,(2,3)))
Run Code Online (Sandbox Code Playgroud)

通过键加入两个列表以获得以下结果的最佳方法是什么?

l3: List[(Int,(Int,(Int,Int)))] = ((1,(1,(1,2))),(1,(2,(1,2))),(2,(1,(2,3))),(2,(2,(2,3))))
Run Code Online (Sandbox Code Playgroud)

And*_* T. 7

您可以使用 a 进行理解并利用在模式匹配中使用 '`'。也就是说,只有当第一个列表中的键与第二个列表中的键相同时,它才会匹配(“`k`”意味着元组中的键必须等于 k ​​的值)。

val res = for {
  (k, v1)   <- l1
  (`k`, v2) <- l2
} yield (k, (v1, v2))
Run Code Online (Sandbox Code Playgroud)

我希望你觉得这有帮助。

  • 这是一个毒品!有这方面的文档吗? (2认同)