【问题标题】:Scala Convert a Map[String, List[String]] to a Map[String, String]Scala 将 Map[String, List[String]] 转换为 Map[String, String]
【发布时间】:2016-07-21 19:49:55
【问题描述】:

有人可以帮我将 Map[String, List[String]] 转换为 scala 中的 Map[String, String] 吗?

这里是 Map[String, List[String]] 如下:

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

那需要转化为 Map[String, String] 如下:

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

【问题讨论】:

  • 你问的是不可能的。地图不能有重复的键。
  • 但它确实有一个 MultiMap

标签: list scala dictionary collections


【解决方案1】:

如前所述,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)
)

【讨论】:

    【解决方案2】:

    地图不能有重复的键。

    【讨论】:

      猜你喜欢
      • 2019-09-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-21
      • 2020-04-01
      • 2021-12-21
      • 2018-09-06
      • 2020-03-17
      相关资源
      最近更新 更多