gpt4 book ai didi

scala - map 上的 FlatmapValues

转载 作者:行者123 更新时间:2023-12-03 03:59:04 24 4
gpt4 key购买 nike

给定一个 Seq 元组,例如:

Seq(
("a",Set(1,2)),
("a",Set(2,3)),
("b",Set(4,6)),
("b",Set(5,6))
)

我想groupBy然后flatMap值来获得类似的东西:

Map(
b -> Set(4, 6, 5),
a -> Set(1, 2, 3)
)

我的第一个实现是:

Seq(
("a" -> Set(1,2)),
("a" -> Set(2,3)),
("b" -> Set(4,6)),
("b" -> Set(5,6))
) groupBy (_._1) mapValues (_ map (_._2)) mapValues (_.flatten.toSet)

我想知道是否有更有效且可能更简单的方法来实现该结果。

最佳答案

您的方向是正确的,但您可以通过使用单个 mapValues 并结合 mapflatten 来简化一点:

val r = Seq(
("a" -> Set(1,2)),
("a" -> Set(2,3)),
("b" -> Set(4,6)),
("b" -> Set(5,6))
).groupBy(_._1).mapValues(_.flatMap(_._2).toSet)

我实际上发现它比 foldLeft 版本更具可读性(但请注意 mapValues 返回 a non-strict collection ,这可能是也可能不是您想要的)。

关于scala - map 上的 FlatmapValues,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25348027/

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