我有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