scala 连接3个Map(2个主Map,1个结果Map),将结果Map中的复合键Map为具有来自主Map的值

eqoofvh9  于 2023-11-18  发布在  Scala
关注(0)|答案(1)|浏览(123)

我有一个包含一些主数据(id->description)的map:瓦尔map 1:Map[String,String] = Map(“001”->“ABCD”,“002”->“MNOP”,“003”->“WXYZ”)
我有另一个包含其他主数据的map(id->description):瓦尔map 2:Map[String,String] = Map(“100”->“Ref 1”,“200”->“Ref 2”,“300”->“Ref 3”)
我有一个结果图如下所示,它是从一些数据集得出的,这些数据集产生了下面的图,其中来自map 1和map 2的id被组合使用来确定密钥,确切地说,这是一个从上述两个图的id分组中得出的图,然后累积数量:
瓦尔map 3:Map[(String,String),Double] = Map((“001”,“200”)->3452.30,(“003”,“300”)->78484.33,(“002”,“777”)-> 893.45)
我需要一个Map输出如下:(“ABCD”,“Ref 2”)->3452.30,(“WXYZ”,“Ref 3”)->78484.33,(“MNOP”,“777”)-> 893.45)
我一直在尝试这个:

val map5 = map3.map(obj => {
  (map1 getOrElse(obj._1._1, "noMatchMap1"))
  (map2 getOrElse(obj._1._2, "noMatchMap2"))
} match {
  case "noMatchMap1" => obj
  case "noMatchMap2" => obj
  case value => value -> obj._2
})

字符串

pcrecxhr

pcrecxhr1#

应该是这样的:

map3.map{
    case((key1, key2), d) => ((map1.getOrElse(key1, key1), map2.getOrElse(key2, key2)),d)
  }

字符串

相关问题