gpt4 book ai didi

scala - 将 Map[String, Seq[Int]] 转换为 Seq[Seq[Int]]

转载 作者:行者123 更新时间:2023-12-04 19:53:51 25 4
gpt4 key购买 nike

我正在尝试转换如下所示的数据:

val inputData =
Seq(("STUDY1", "Follow-up", 1),
("STUDY1", "Off Study", 2),
("STUDY1", "Screening", 3),
("STUDY1", "Treatment", 4),
("STUDY2", "Follow-up", 5),
("STUDY2", "Off Study", 6),
("STUDY2", "Screening", 7),
("STUDY2", "Treatment", 8));

进入如下所示的数据:

val desiredData =
Seq(Seq(1,2,3,4),
Seq(5,6,7,8));

我得到的最接近的是这个:

val result: Map[String, Seq[Int]] =
data.groupBy(i => i._1)
.mapValues(j => j.map(k => k._3))
.mapValues(_.toArray)

result.values.toSeq

这会产生:

res0: Seq[Seq[Int]] = Stream(WrappedArray(1, 2, 3, 4), ?)

最后一个问号让我陷入困境。

编辑登陆这里的 future 互联网旅行者:我的代码实际上确实工作了……我的困惑源于理解 ? 的全部内容。下面的人的回答帮助我看到 mapValues 进行了惰性评估,而 ? 只是暗示了这一点。

最佳答案

Map 上的

mapValues 是惰性的(不同于默认 Map 上的任何其他方法)。所以这可能是那里的问题。你试过吗:

data.groupBy(_._1).map(_._2.map(_._3).toArray)

请注意,toArray 在这里是完全可选的。

关于scala - 将 Map[String, Seq[Int]] 转换为 Seq[Seq[Int]],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35006568/

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