6

リストのこのマップは、どのようにして、

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

主に Scala ライブラリのメソッドを使用して、このマップのリストに置き換えられますか?

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

自分でソリューションをコーディングすることはできますが、ライブラリ機能を使用することにもっと関心があるため、推奨されるソリューションは、コンパクトで適度に読みやすくしながら、可能な場合は Scala ライブラリを使用する必要があります。

この 2 番目の例は、複数のエントリを持つマップで必要な変換を示しています。

これから、

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 に答える