scala - 读取 CSV 到 Map[String,String]
问题描述
我需要(从输入流)读取 2 列 csv 并返回一个 Map。
文件score.txt
:
player1,21
player2,99
player3,143
非工作代码:
Try(Source.fromInputStream(getClass.getResourceAsStream(s"$RelativePath/$fileName")).getLines().map(_.split(","))) match {
case Success(scoreMap) => scoreMap
case Failure(err) => //TODO add throw exception
}
第一行返回一个Iterator[Array[String]]
,但我如何返回一个Map[String,String]
?
PS我在堆栈上尝试了各种“CSV to MAP”解决方案,每一个看起来都是用自己的语言编写的,而且都有我无法理解的错误。
解决方案
假设您从以下行收到的输入
Source.fromInputStream(getClass.getResourceAsStream(s"$RelativePath/$fileName")).getLines().map(_.split(","))
格式如下
val inputArr: Iterator[Array[String]] = Array(
Array("player1", "21"),
Array("player2", "99"),
Array("player3", "143")
).toIterator
要将其转换Iterator[Array[String]]
为Map[String, String]
,您可以编写以下函数
val output = inputArr.map{ arr =>
arr(0) -> arr(1)
}.toMap
它会给你一个输出
output: scala.collection.immutable.Map[String,String] = Map(player1 -> 21, player2 -> 99, player3 -> 143)
如果这回答了您的问题,请告诉我。
推荐阅读
- java - 使用 JAXB 将 img.Xml 反射到 Java 对象中
- hyperlink - Typo3 7.6 如何在链接向导中显示多于编辑器的数据库挂载
- php - Jquery文件上传在Laravel中不起作用
- ruby-on-rails - 为用户创建多个工厂
- python - 如何在python中查找每n(50)行的模式?
- json - 将 JSON 解析为表格(Wordpress)
- python - 使用 PYTHON 3.5 和 Backtrader 使用 GPU 运行优化过程
- php - WordPress 自定义主题将转到 404.php
- javascript - Apollo 查询返回错误“预期字符串,找到字符串”
- python - Allure-behave 不将失败的西装报告为“失败”