首页 > 解决方案 > Scala - 将 List[((String, String), Double)] 转换为 List[String,Map[String,Double]]

问题描述

我有一个数据列表,List[((String, Double), Double)]其中的列是Car BrandCar IDAverage 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]],但迄今为止的努力并没有太多运气。

标签: scalaintellij-idea

解决方案


这是你想要的 ?

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

推荐阅读