Scala 嵌套映射 - 如何处理?

Fre*_*red 4 csv maps scala nested

这是我的嵌套地图示例,其中数据为文字。该程序按预期运行。

\n\n
    var x = scala.collection.mutable.Map(\n        ("Early", Map(("a", 1),  ("b", 2))), \n        ("Late",  Map(("x", 24), ("y", 25))))\n\nfor (ticker <- x.keys) {\n    val trades = x(ticker)\n    for (tradetime <- trades.keys) {\n        val tradetotal = trades(tradetime)\n        println(ticker + " | " + tradetime + " | " + tradetotal)\n    }\n    println(ticker + " | " + trades)\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

但是,我想消除文字并从 csv 文件读取上述值。这是 csv:

\n\n
Early,a,1 \nEarly,b,2\nLate,x,24\nLate,y,25\n
Run Code Online (Sandbox Code Playgroud)\n\n

下面是读取 csv 并以类似于上面带有文字的程序的方式打印出值的代码。

\n\n
  val bufferedSource = io.Source.fromFile("mapt.csv")\n  val builder = StringBuilder.newBuilder\n\n  for (line <- bufferedSource.getLines) {\n    val cols = line.split(",").map(_.trim)\n    println(s"${cols(0)}|${cols(1)}|${cols(2)}")\n    var tmp = cols(0)   // s"${cols(0)}"\n\n    val inner = scala.collection.mutable.Map.empty[String, Int]\n    inner(cols(1)) = cols(2).toInt\n    println(inner)\n\n    val outer = scala.collection.mutable.Map.empty[String, String]\n    outer(cols(0)) = inner\n    println(outer)\n\n  }\n  bufferedSource.close\n
Run Code Online (Sandbox Code Playgroud)\n\n

我的代码不起作用。我\xe2\x80\x99m 努力寻找有关如何处理嵌套映射的指导。我正在学习Scala。感谢您提供从 csv 文件数据创建嵌套地图的任何建议。

\n\n

我收到以下错误:

\n\n

在此输入图像描述

\n

Arn*_*-Oz 5

val lines = scala.io.Source.fromFile("mapt.csv").getLines()
val row = lines.map(_.split(",").map(_.trim))
val outerMap=row.groupBy(_.head)
val result = outerMap.map{case (key,values)=> 
  key-> values.map(v=>(v(1)->v(2))).toMap}  
Run Code Online (Sandbox Code Playgroud)