作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
给定一个 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
并结合 map
和 flatten
来简化一点:
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/
给定一个 Seq 元组,例如: Seq( ("a",Set(1,2)), ("a",Set(2,3)), ("b",Set(4,6)), ("b",Set(5,6)) ) 我想grou
我正在阅读 Learning Spark 书籍,但无法理解以下对 rdd 转换。 rdd.flatMapValues(x => (x to 5)) 它应用于 rdd {(1,2),(3,4),(3,6
我有一组我想读入 RDD 的日志文件。 这些日志文件都是压缩的 gzip 文件,文件名是 日期盖章。 我一直在用sc.wholeTextFiles()读入文件,似乎我遇到了 Java 堆内存问题。为了
我是一名优秀的程序员,十分优秀!