list - 在元组列表(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 风格,而不是命令式风格。
有什么提示吗?
解决方案
我认为解决问题的“Scala”方法是:
- 从您的列表中,创建一个 Map ,其中键是日期,值是已购买物品的列表
- 总结每一天的所有钱
在 Scala 中,可以使用groupBy
and来完成mapValues
:
bought.groupBy(_._3)
.view
.mapValues(values => values.map(_._2).sum)
.toList
推荐阅读
- rest - 无法更新/添加/删除用户到 Ranger 中的组
- android - Flowable订阅在插入记录后获取空列表
- spring - Spring Pagination sorting with cases
- security - RSA 公钥以什么格式通过 Internet 发送?
- tsql - 联结表上的 tsql update trigger1 更新主表,主表更新 trigger2 尝试更新主表中同一行上的其他列 - 失败
- javascript - 如何在不损失质量的情况下扩大图像?
- python - 如何
从 Python 爬取中删除 - express - Vue/Vuex - 如何在路由更改后保持用户身份登录
- firebase - Flutter for Auth 的 Firebase UI
- java - 在 Kotlin 中与 @RequestParam 一起使用时,自定义 HashMap 类获取参数类型不匹配