【发布时间】:2020-02-22 19:12:43
【问题描述】:
对于第一个元素构成键的一系列事物:
val things = Seq(("key_1", ("first", 1)),("key_1", ("first_second", 11)), ("key_2", ("second", 2)))
我想计算一个键出现的频率,然后只保留前 k 个元素。
在 pandas 或数据库中我会:
- 计数
- 将结果加入到原始和过滤器中
在 Scala 中,第一部分可以通过以下方式处理:
things.groupBy(identity).mapValues(_.size)
这里的第一位是:
things.groupBy(_._1).mapValues(_.map( _._2 ))
但我不确定第二步。
在上面的例子中,当查看 top-1 键时,key_1 出现两次,因此被选中。
期望的输出结果是前 k 个关键元组的第二个元素:
Seq(("first", 1),("first_second", 11))
编辑
我需要一个适用于 2.11.x 的解决方案。
【问题讨论】:
-
对不起,这确实是最小示例中的错字 - 我已经更新了它。