我有2所列出:加入不等长度两个列表中斯卡拉
val list_1 = List((1, 11), (2, 12), (3, 13), (4, 14))
val list_2 = List((1, 111), (2, 122), (3, 133), (4, 144), (1, 123), (2, 234))
我想在第二个列表的第一个列表的值替换键,导致一个新的列表,看起来像:
List ((11, 111), (12, 122), (13, 133), (14, 144), (11, 123), (12, 234))
这是我的尝试:
object UniqueTest {
def main(args: Array[String]){
val l_1 = List((1, 11), (2, 12), (3, 13), (4, 14))
val l_2 = List((1, 111), (2,122), (3, 133), (4, 144), (1, 123), (2, 234))
val l_3 = l_2.map(x => (f(x._1, l_1), x._2))
print(l_3)
}
def f(i: Int, list: List[(Int, Int)]): Int = {
for(pair <- list){
if(i == pair._1){
return pair._2
}
}
return 0
}
}
这导致:
((11, 111), (12, 122), (13, 133), (14, 144), (11, 123), (12, 234))
上面的程序是一个很好的方法来做到这一点? Scala中是否有内置函数来处理这种需求,或者另一种方式来处理这种操作?
非常感谢。你可以在.map之后告诉我“{}”和“()”之间的区别吗?有时,我可以在.map之后使用圆括号,但是对于这个“()”会给我编译器错误。 – Frankie
我在这种情况下使用了''{}'',所以我可以使用模式匹配即''case(a,b)=> ...'' –
在元组列表上应用'toMap'有风险:元组,如果数据集中有重复的第一个元素。 – Roman