6

这张地图怎么能列出来,

Map (
   "a" -> List(1, 2)
)

主要使用 Scala 库中的方法转换到这个映射列表?

List(
  Map("a" -> 1),
  Map("a" -> 2)
)

我可以自己编写解决方案,但我对使用库功能更感兴趣,因此首选解决方案应尽可能使用 Scala 库,同时保持紧凑和适度易读。

第二个示例说明了使用具有多个条目的映射所需的转换。

由此,

Map (
   10 -> List("10a", "10b", "10c"),
   29 -> List("29a", "29b", "29c")
)

对此,

List(
  Map(
    10 -> "10a",
    29 -> "29a"),
  Map(
    10 -> "10b",
    29 -> "29b"),
  Map(
    10 -> "10c",
    29 -> "29c")
)

可以假设所有值都是相同大小的列表。

可选地,该解决方案可以处理值是空列表但不是必需的情况。如果解决方案支持空列表值,则此输入,

Map (
   "a" -> List()
)

应该导致List().

4

1 回答 1

9
val m = Map (
   10 -> List("10a", "10b", "10c"),
   29 -> List("29a", "29b", "29c")
)

m.map{ case (k, vs) =>
  vs.map(k -> _)
}.toList.transpose.map(_.toMap)

请注意,这也处理您的“空列表”情况

于 2013-07-25T08:51:18.610 回答