我有一张包含一些主数据(id->描述)的地图: val map1:Map [String,String] = Map(“ 001”->“ ABCD”,“ 002”->“ MNOP”,“ 003”->“ WXYZ”)
我还有另一个包含其他主数据(id->描述)的地图: 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)
我需要在Map中输出如下: (“ 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
})
答案 0 :(得分:1)
应该是这样:
map3.map{
case((key1, key2), d) => ((map1.getOrElse(key1, key1), map2.getOrElse(key2, key2)),d)
}
顺便说一句,我邀请您向https://stackoverflow.com/help/how-to-ask咨询有关如何提出好的问题,尤其是请提供您尝试过的内容。我很乐意为您提供帮助,但这不是您可以转储作业/完成工作的网站:-D