scala - Scala - 将 List[((String, String), Double)] 转换为 List[String,Map[String,Double]]
问题描述
我有一个数据列表,List[((String, Double), Double)]
其中的列是Car Brand、Car ID和Average price。我想将此数据重新格式化为List[String, Map[Int, Double]]
. 我不确定从哪里开始。
我怀疑我应该使用类似.map(car => (car.brand, car.carColor, car.purchasePrice)
将值拆分出来的东西,然后使用另一个映射将它们放入我需要的结构中。
生成我希望重新格式化的数据的代码如下
val carStats = cars.groupBy(c => (c.brand,
c.carID)).mapValues(cars => car.map(_.purchasePrice).sum / cars.length).toList
我最终希望将此列表重新格式化为List[String, Map[String, Double]]
,但迄今为止的努力并没有太多运气。
解决方案
这是你想要的 ?
val result = carStats.map{case ((brand, id), avg_price) => (brand, id, avg_price)}.groupBy(_._1).mapValues(v => v.map{e => (e._2,e._3)}.toMap).toList
推荐阅读
- spring-boot - 防止在 JUnit 中执行 jpa @Query
- python - Discord.py raw_reaction_add 找不到成员
- python-3.x - 如何为 wx.html2.WebView 设置 socks5
- flutter - Flutter 的有状态小部件中未显示文本
- javascript - Markdown 段落标签正则表达式
- python - 从 python 脚本创建的可执行文件只启动一个 DOS 窗口
- python - 为熊猫中的每一行动态选择匹配的列子集
- javascript - 在单击按钮时使用道具反应渲染组件
- python - 使用 Python 从预先存在的数据框创建新的数据框
- json - 如何在 Django 中加载带有多对多关系的 fixtures.json