Set("a","c"), 2-6ren">
gpt4 book ai didi

scala - 如何在 Scala 中使用 Set 将元组转换为 Map

转载 作者:行者123 更新时间:2023-12-01 11:09:31 25 4
gpt4 key购买 nike

这是我的第一篇文章。我想在 Scala 中使用 Set 将元组转换为 Map,如下所示。

Set((1,"a"),(2,"b"),(1,"c"))

Map(1 -> Set("a","c"), 2 -> Set("b"))

有没有办法让它更简单?

如果有任何遗漏的信息,请告诉我。

最佳答案

我建议检查 Scala 集合库中的所有方法,它非常广泛,通常涵盖所有像这样的常见情况。

这是你如何做的:

Set((1,"a"),(2,"b"),(1,"c"))
.groupBy(_._1).mapValues(_.map(_._2))

结果:

res0: Map[Int,Set[String]] = Map(2 -> Set(b), 1 -> Set(a, c))

UPD:正如@OlegPyzhcov 所指出的,mapValues 创建了原始 map 的惰性 View ,其中的值在每次访问时都会重新计算。如果在创建后重复访问 map ,这可能效率低下。要解决该问题,您可能最终需要具体化 map 。我认为最简单的方法如下:

.mapValues(_.map(_._2)).map(identity)

@OlegPyzhcov 如果有更简单/更有效的方法,请指正我。

关于scala - 如何在 Scala 中使用 Set 将元组转换为 Map,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46150259/

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