gpt4 book ai didi

java - 使用第二个列表作为键过滤 Scala 元组列表(元组内)

转载 作者:行者123 更新时间:2023-12-02 09:16:32 24 4
gpt4 key购买 nike

我在过滤 Scala 集合时遇到问题。任何帮助将不胜感激。

我有以下设置:

val groupByLetter = (A, List((2018-10-24,1.0), (2018-10-22,-2.1), (2018-10-10,5.1), (2018-11-22,2.2), (2018-11-10,24)), (B, List((2018-10-24, 1.0), (2018-10-22,-2.1), (2018-10-10,5.1), (2018-11-22,2.2), (2018-11-10,30)))

val dates = List(2018-10-24, 2018-10-22, 2018-11-10)

期望的结果是这样的:

(A, List((2018-10-24,1.0), (2018-10-22,-2.1))) 
(B, List((2018-10-24,1.0), (2018-10-22,-2.1), (2018-11-10,30)))

我尝试过以下两种方法,以及无数其他方法:

val try1 = groupByLetter.filter(d => dates.contains(d._2.productIterator.foreach(s => s).toString))

val try2 = groupByLetter.filter(d => dates.contains(d._2.map(s => println(s._1)).toString))

注意:日期列表都是字符串。还 内部元组中的groupByLetter的日期字段是DateTime,这就是为什么我必须.toString它们。

期待任何帮助解决我的问题!谢谢!

最佳答案

我不得不付出很多额外的努力来理解你的问题。如果我没有完全正确地理解,那么你就只能怪自己了。

import java.time.LocalDate

val groupByLetter :List[(String, List[(LocalDate, Double)])] =
List(("A", List((LocalDate.parse("2018-10-24"),1.0)
,(LocalDate.parse("2018-10-22"),-2.1)
,(LocalDate.parse("2018-10-10"),5.1)
,(LocalDate.parse("2018-11-22"),2.2)
,(LocalDate.parse("2018-11-10"),24.0)))
,("B", List((LocalDate.parse("2018-10-24"),1.0)
,(LocalDate.parse("2018-10-22"),-2.1)
,(LocalDate.parse("2018-10-10"),5.1)
,(LocalDate.parse("2018-11-22"),2.2)
,(LocalDate.parse("2018-11-10"),30.0))))

val dates = List("2018-10-24", "2018-10-22", "2018-10-30")

val filtered = groupByLetter.map{outerTpl =>
(outerTpl._1, outerTpl._2.filter(innerTpl => dates.contains(innerTpl._1.toString)))
}
//List((A,List((2018-10-24,1.0), (2018-10-22,-2.1)))
// , (B,List((2018-10-24,1.0), (2018-10-22,-2.1))))

我注意到 AB 列表几乎完全相同。 (它们在过滤结果中是相同的。)提供测试数据以便更容易判断结果是否正确不是更有意义吗?

关于java - 使用第二个列表作为键过滤 Scala 元组列表(元组内),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58943860/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com