首页 > 解决方案 > 在元组列表(SCALA)中将所有具有相同日期的双精度加起来

问题描述

我有以下列表:


val bought = List(("ta",5.5,"1/09/21"),("ta",50.5,"2/09/20"),("xa",60.38,"1/09/21"),...)

我想在 Scala 中实现一个函数,该函数返回一个元组列表,类型为 List[(String,Double)],为日期字符串和当天花费的金额的两倍。

我的想法是获取日期集

val x = bought.map(_._3).toSet

如果它们具有相同的日期,然后使用理解结构来对每个元组的值求和,但我的尝试是徒劳的。

拜托,它应该是 scala 风格,而不是命令式风格。

有什么提示吗?

标签: listscalatuples

解决方案


我认为解决问题的“Scala”方法是:

  • 从您的列表中,创建一个 Map ,其中键是日期,值是已购买物品的列表
  • 总结每一天的所有钱

在 Scala 中,可以使用groupByand来完成mapValues

bought.groupBy(_._3)
  .view
  .mapValues(values => values.map(_._2).sum)
  .toList

推荐阅读