假設我有一個元組串列:
val temp = List((string1, int1), (string2, int2), (string1, int3))
我想讓它 groupBy 成為以下格式的 Map ,我該怎么做?
Map(string1 -> List(int1, int3), string2 -> List(int2))
如果我直接使用 groupBy ,它將導致如下結果:
temp.groupBy(x => x._1)
// output
Map(string1 -> List((string1,int1),(string1,int3)), string2 -> List((string2,int2)))
我知道 mapValue 在這種情況下可能很有用,但我無法理解這一點。
uj5u.com熱心網友回復:
在第一個 groupBy 的string1情況下,你有這個串列:List((string1,1), (string1,3))
您可以將其映射為僅保留第二個值 .map { case (k,v) => (k,v.map(_._2))}
作業示例
val temp = List(("string1", 1), ("string2", 2), ("string1", 3))
println(temp.groupBy(_._1).map { case (k,v) => (k,v.map(_._2))})
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/327833.html
標籤:斯卡拉
上一篇:Scala與貓在Kleisli上進行資料驗證,為什么我的代碼快速失敗而不是累積錯誤?
下一篇:使用Seq自動衍生的Cats
