2017-07-12 22 views
0

私はマップからの文字列キーで構成されるタプルを作成する方法を考えていたセットからの文字列を新しいマップでキーを形成するタプルとしてまとめます。新しいマップの値は0.0に初期化されます。スカラ変換マップ[文字列、セット[文字列]]をマップ[(文字列、文字列)、オプション[ダブル]]

例:私は次のようにしている場合:

Map[ USA, Set[CA, NY, WA]] 

私がどのように見えるこのから新しいマップを作成したい:

Map[(USA,CA) -> 0.0, (USA,NY) -> 0.0, (USA,WA) -> 0.0] 

私はMap[String, String]を作成することができるが、私は期待していましたタプルキーを作成する際に助けを得ることができます。

答えて

3
Map("USA" -> Set("CA", "NY", "WA")) flatMap { case (k, set) => set.map((k, _) -> 0.0) } 
0
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) 
    } 
} 
関連する問題