加入 3 个映射(2 个主映射,1 个结果映射),将结果映射中的复合键映射为具有来自主映射的值

Join 3 maps (2 master map, 1 resultant map), to map the composite key in the resultant map to have values from the master maps

我有一张包含一些主数据的地图(id->description): val map1: Map[String, String] = Map("001" -> "ABCD", "002" -> "MNOP", "003" -> "WXYZ")

我有另一张包含一些其他主数据的地图(id->description): val map2: Map[String, String] = Map("100" -> "Ref1", "200" -> "Ref2", "300" -> "Ref3")

我有一个如下的结果图,它是从一些数据集派生出来的,这些数据集产生了下面的地图,其中结合使用了 map1 和 map2 的 id 来确定键,准确地说是从分组派生的地图基于上述两个地图的 ID,然后累加金额:

val map3:Map[(String, String),Double] = Map(("001","200")->3452.30,("003","300")->78484.33,( "002","777") -> 893.45)

我需要在地图中输出如下: ("ABCD","Ref2")->3452.30,("WXYZ","Ref3")->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
})

应该是这样的:

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

顺便说一句,我邀请您咨询 https://whosebug.com/help/how-to-ask 以了解如何提出好的问题,特别是,请包括您尝试过的问题。我很乐意为您提供帮助,但这不是一个您可以丢掉 homework/work 并完成它的网站:-D