list - 在Scala中,有没有办法将两个列表转换为Map?

标签 list scala dictionary scala-2.8 tuples

我有两个列表,一个 List[A] 和一个 List[B]。我想要的是 Map[A,B] 但我想要 zip 的语义。所以开始是这样的:

var tuplesOfAB = listOfA zip listOfB

现在我不确定如何从我的 tuplesOfAB 构造 Map

作为后续问题,我还想反转我的 map ,以便从 Map[A,B] 我可以创建一个 Map[B,A]。谁能用线索棒打我吗?

最佳答案

2.8 中,使用 CanBuildFrom 功能 ( as described by Daniel ) 并使用 breakOut 和类型指令 告知编译器结果类型应该是什么:

import scala.collection.breakOut
val m = (listA zip listB)(breakOut): Map[A,B]

以下也可以工作:

val n: Map[A,B] = (listA zip listB)(breakOut)

并且(正如下面 EastSun 所指出的)这已作为 toMap 添加到库中

val o = (listA zip listB).toMap

至于反转 map ,你可以这样做:

val r = m.map(_.swap)(breakOut): Map[B, A]

关于list - 在Scala中,有没有办法将两个列表转换为Map?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2189784/

相关文章:

java - 读取文本文件和处理每一行的最干净的方法

python - 为什么 Python 扩展输出 [[...]]

string - 如何在scala中获取子字符串?

c++ - map 实现中的列表迭代器实现 - 麻烦

python - 字典的键在添加时顺序不对?

html - 当我在 li 中使用 float 时,list-style-type 在 IE 7 中不起作用

Python,将索引列表转换为切片

scala - Play Akka 记录器不向控制台输出调试消息

scala - 使用 Scala 和 logback 配置 Apache Spark 日志记录

javascript - 通过 TimeSlider 在传单 map 中显示模型输出图像