Scala将映射[String,List[String]]转换为映射[String,String]

Scala将映射[String,List[String]]转换为映射[String,String],list,scala,dictionary,collections,List,Scala,Dictionary,Collections,有人能帮我在scala中将Map[String,List[String]]转换成Map[String,String]吗 下面是映射[String,List[String]],如下所示: val pets: Map[String, List[String]] = Map( "home" -> List("cat", "dog", "fish"), "farm" -> List("cow", "horse"), "wild" -> List("tiger"

有人能帮我在scala中将Map[String,List[String]]转换成Map[String,String]吗

下面是映射[String,List[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"
)
需要转换为Map[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"
)

地图不能有重复的键。

地图不能有重复的键。

如前所述,
地图中的每个键都是唯一的

也就是说,您可以将映射转换为元组序列:

pets.toSeq.flatMap { case (key, list) => list.map(key -> _) }
将为您提供:

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

如前所述,
地图中的每个键都是唯一的

也就是说,您可以将映射转换为元组序列:

pets.toSeq.flatMap { case (key, list) => list.map(key -> _) }
将为您提供:

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

你所要求的是不可能的。地图不能有重复的关键点。但它有一个多重地图。你所要求的是不可能的。地图不能有重复的关键点。但它有一个多重地图