如何用两个列表创建一个地图?

Moh*_*hit 0 scala

我有两个清单

val a = List(1,2,3)
val b = List(5,6,7)
Run Code Online (Sandbox Code Playgroud)

我想创建一个像这样的地图:

val h = Map(1->5, 2->6, 3->7) 
Run Code Online (Sandbox Code Playgroud)

基本上通过列表和分配键值对进行迭代.

如何在Scala中正确完成?

Mic*_*jac 8

您可以zip将列表一起放入元组列表中,然后调用toMap:

(a zip b) toMap
Run Code Online (Sandbox Code Playgroud)

请注意,如果一个列表比另一个列表长,则会被截断.


例:

val a = List(1, 2, 3)
val b = List(5, 6, 7)

scala> (a zip b) toMap
res2: scala.collection.immutable.Map[Int,Int] = Map(1 -> 5, 2 -> 6, 3 -> 7)
Run Code Online (Sandbox Code Playgroud)

截断:

val c = List("a", "b", "c", "d", "e")

scala> (a zip c) toMap
res3: scala.collection.immutable.Map[Int,String] = Map(1 -> a, 2 -> b, 3 -> c)

(c zip a) toMap
res4: scala.collection.immutable.Map[String,Int] = Map(a -> 1, b -> 2, c -> 3)
Run Code Online (Sandbox Code Playgroud)