2016-04-01 18 views
0

Map [String、List [String]]をスカラーのMap [String、String]に変換する手助けができますか?ここでScala Map [String、List [String]]をマップ[String、String]に変換する

は地図で[文字列、リスト[文字列]]次のように:

次のように[文字列、文字列]マップに変換する必要が
val pets: Map[String, List[String]] = Map(
    "home" -> List("cat", "dog", "fish"), 
    "farm" -> List("cow", "horse"), 
    "wild" -> List("tiger", "elephant") 
) 

val pets2: Map[String, String] = Map(
    "home" -> "cat", 
    "home" -> "dog", 
    "home" -> "fish", 
    "farm" -> "cow", 
    "farm" -> "horse", 
    "wild" -> "tiger", 
    "wild" -> "elephant" 
) 
+1

あなたが求めているものは不可能です。地図には繰り返しキーがありません。 – pedrofurla

+0

でも、マルチマップ –

答えて

3

前述のように、Mapの各キーは一意です。言っ

、何でき行うにはタプルのシーケンスにマップを変換です:

pets.toSeq.flatMap { case (key, list) => list.map(key -> _) } 

はあなたを与えるだろう。

ArrayBuffer(
    (home,cat), 
    (home,dog), 
    (home,fish), 
    (farm,cow), 
    (farm,horse), 
    (wild,tiger), 
    (wild,elephant) 
) 
1

マップはできませんがキーが繰り返されています。

+0

があります。残念です。 – user422930