2

のがあり、TupleTuple変換する必要がありMapます。例えば

(("a", 3), ("b", 1), ("c", 7), ..., ("z", 10))

結果としてMap

Map("a" -> 3, "b" -> 1, ..., "z" -> 10)

Scalaでこれを行う方法は何ですか?

4

4 に答える 4

6
scala> tuples
res0: ((String, Int), (String, Int), (String, Int)) = ((a,3),(b,1),(c,7))


scala> tuples.productIterator.map{case (a,b)=> (a -> b)}.toMap
res1: scala.collection.immutable.Map[Any,Any] = Map(a -> 3, b -> 1, c -> 7)


scala> res1("a")
res2: Any = 3

scala> res1("b")
res3: Any = 1

scala> res1("c")
res4: Any = 7
于 2013-04-22T05:58:24.887 に答える
1

最初のステップとして、任意のタプルt(実際には のインスタンス) に対して、 を使用して、そのコンポーネントに対して を取得scala.Productできます。t.productIteratorIterator[Any]

次に、マップを取得するには、次の操作を実行できます。

t.productIterator.asInstanceOf[Iterator[(String, Int)]].toMap

注意: 引数の型が同種であるため、タプルを使用するのは少し奇妙に思えます。List[(String, Int)]いいねを使わない理由

List(("a", 3), ("b", 1), ("c", 7), ..., ("z", 10))
于 2013-04-22T05:53:42.837 に答える