Trong Python, một cuốn từ điển có thể được xây dựng từ một bộ sưu tập iterable của các bộ:Scala - làm thế nào để xây dựng một bản đồ bất biến từ một bộ sưu tập của Tuple2?
>>> listOfTuples = zip(range(10), [-x for x in range(10)])
>>> listOfTuples
[(0, 0), (1, -1), (2, -2), (3, -3), (4, -4), (5, -5), (6, -6), (7, -7), (8, -8), (9, -9)]
>>> theDict = dict(listOfTuples)
>>> theDict
{0: 0, 1: -1, 2: -2, 3: -3, 4: -4, 5: -5, 6: -6, 7: -7, 8: -8, 9: -9}
>>>
Có một cú pháp Scala tương đương? Tôi thấy rằng bạn có thể sử dụng số lượng loại Tuple2 để biến đổi bản đồ, ví dụ:
scala> val theMap = Map((0,0),(1,-1))
theMap: scala.collection.immutable.Map[Int,Int] = Map((0,0), (1,-1))
scala> theMap(0)
res4: Int = 0
scala> theMap(1)
res5: Int = -1
scala> val tuplePairs = List((0,0),(1,-1))
tuplePairs: List[(Int, Int)] = List((0,0), (1,-1))
scala> val mapFromIterable = Map(tuplePairs)
<console>:6: error: type mismatch;
found : List[(Int, Int)]
required: (?, ?)
val mapFromIterable = Map(tuplePairs)
^
Tôi có thể lặp lại và chỉ định từng giá trị theo cách thủ công, nhưng có vẻ như phải có cách tốt hơn.
scala> var theMap:scala.collection.mutable.Map[Int,Int] = scala.collection.mutable.Map()
theMap: scala.collection.mutable.Map[Int,Int] = Map()
scala> tuplePairs.foreach(x => theMap(x._1) = x._2)
scala> theMap
res13: scala.collection.mutable.Map[Int,Int] = Map((1,-1), (0,0))
toMap hoạt động tốt. Rõ ràng hơn cú pháp ++. – I82Much
Bản đồ 'trong câu trả lời 2,7 là không cần thiết. 'Map() ++ tuplePairs' sẽ làm, như' Bản đồ (tuplePairs: _ *) '. –
Thật vậy, bạn tất nhiên, cảm ơn –