如何将一个地图中的值与另一个地图中的值相乘?

时间:2017-04-24 15:20:15

标签: scala

如果你有两个地图(一个是可变的,另一个是不可变的),你如何将一个值与另一个的相应值相乘?

例如:

val testA = scala.collection.mutable.Map("£2" -> 3, "£1" -> 0, 
                  "50p" -> 4, "20p" -> 0, "10p" -> 0, "5p" -> 0)
val testB = scala.collection.immutable.Map("£2" -> 2, "£1" -> 1, 
                  "50p" -> 0.5, "20p" -> 0.2, "10p" -> 0.1, "5p" -> 0.05)

期待结果:

val total = scala.collection.immutable.Map("£2" -> 6, "£1" -> 0, 
                  "50p" -> 2, "20p" -> 0, "10p" -> 0, "5p" -> 0)`

1 个答案:

答案 0 :(得分:2)

您可以使用map将每个值映射到该值乘以testB上的查找结果(如果没有找到,则为1.0)

testA.map { case (k, v) => (k, v * testB.getOrElse(k, 1.0)) }