如何使用Map而不是Class对象来表示Scala中的数据

时间:2015-09-01 17:16:27

标签: list scala class dictionary

我的目标是使用Map(不可变)而不是类来表示我在Scala中的数据。我只是将数据从一个源文件转换为另一种格式,使用Map似乎是合理的,而是建模一个类来表示我的数据。

示例:

我有一份原始数据列表清单。

val x = List(List("a","b","c"), List("x","y","z")) // the values, order matters
val y = List("field1","field2","field3") // the keys, order matters

我想将架构应用于原始数据并创建地图列表。订单与地图无关。

val z = List(Map("field1" -> "a", "field2" -> "b", "field3" -> "c"), List("field1" -> "x", "field2" -> "y", "field3" -> "z"))

我尝试过拉链但不是我想要的

val z = x zip(y) toMap
  z: scala.collection.immutable.Map[List[String],String] = Map(List(a, b, c) -> field1, List(x, y, z) -> field2)

我一直不知道如何使用x映射y并返回Map。 一些方向将不胜感激。

EDITED:这种方法的灵感来自Rich Hickey的talk

1 个答案:

答案 0 :(得分:7)

我认为您使用zip走在正确的轨道上,您只需要通过x将其应用于map中的每个项目,而不是将其应用于{{1}本身。这是一个解决方案,我相信还有其他解决方案:

x