我在想一种方法来创建一个元组,该元组包含来自地图的String键以及Set中的每个字符串作为元组,形成新地图中的键。新地图的值将初始化为0.0。
Ex:如果我必须遵循:
Map[ USA, Set[CA, NY, WA]]
我想从中创建一个新的地图,如下所示:
Map[(USA,CA) -> 0.0, (USA,NY) -> 0.0, (USA,WA) -> 0.0]
我能够创建一个Map[String, String]
,但我希望能够在创建元组密钥时获得一些帮助。
答案 0 :(得分:4)
Map("USA" -> Set("CA", "NY", "WA")) flatMap { case (k, set) => set.map((k, _) -> 0.0) }
答案 1 :(得分:1)
val myMap = Map("USA" -> Set("CA", "NY", "WA"))
val newMap = myMap.foldLeft(Map[(String, String), Double]()) {
case (acc, (key, values)) => {
acc ++ (for {
value <- values
} yield (key, value) -> 0.0)
}
}