2016-11-21 9 views
0

我有一个字频阵列是这样的:反向字频地图Scala中

[("hello", 1), ("world", 5), ("globle", 1)] 

我不得不reverse它使得我得到的频率 - 的wordCount地图像这样: [(1- ,2),(5,1)]

请注意,由于两个单词(“hello”和“globe”)的频率为1,因此映射的值为2。但是,由于只有一个词的频率为5,所以该条目的值为1。我怎样才能在scala中做到这一点?

更新:

我碰巧想出解决办法,以及:

arr.groupBy(_._2).map(x => (x._1,x._2.toList.length)) 
+3

可能[斯卡拉我如何计算列表中出现的次数]的副本(http://stackoverflow.com/questions/11448685/scala-how-can-i-count-the-number-of-occurrences-in-a -list) – Yogesh

+0

你不需要' .toList'因为'x._2'集合已经有一个'length'方法。 – jwvh

回答

4

您可以第一组由计数,然后就得到各组的大小

val frequencies = List(("hello", 1), ("world", 5), ("globle", 1)) 
val reversed = frequencies.groupBy(_._2).mapValues(_.size).toList 
res0: List[(Int, Int)] = List((5,1), (1,2)) 
+0

谢谢。我碰巧找出了一个替代答案。更新我的原始帖子。谢谢。 –