戦略 Scala 日記

素人プログラマの思考のセンス

Tuple3以上をもつListから、Tupleの値をキーにMapを作成する

たとえば、次のようなリストがあったとする。

val members = List(
  ("Momota", "red", 1994),
  ("Tamai", "yellow", 1995),
  ("Sasaki", "pink", 1996), 
  ("Ariyasu", "green", 1995), 
  ("Takagi", "purple", 1995)
)

これを、Map("Momota" -> ("red", 1994), "Tamai" -> ("yellow", 1995), ...)というMapの形にしたい。 このような場合は、Listに対してmapメソッドで処理をかけるのだが、パターンマッチを利用して次のように記述する方法がある。

val membersMap = members.map{ case (key, val0, val1) => key -> (val0, val1) }.toMap

このとき、list.map( case (a, b, c) => a -> (b ,c) )のように()を使うとエラーとなるので、{}を使うようにする。