0

我有一个List[(List[(Char,Int)],String)]这样的

val words = List((List(('a',1),('e',1),('t',1)),"ate"),
                 (List(('a',1),('e',1),('t',1)),"eat"),
                 (List(('a',1),('e',1),('t',1)),"tea"))

它表示每个单词中每个字符的出现次数。

现在我想按出现次数对这个列表进行分组,以生成一个包含这样一个项目的列表

val grouped = List((List(('a',1),('e',1),('t',1)),(List("ate","eat","tea"))))

我试过words groupBy(i => i._1)了,但它的输出是

(List((a,1), (e,1), (t,1)),List((List((a,1), (e,1), (t,1)),ate), (List((a,1), (e,1), (t,1)),eat), (List((a,1), (e,1), (t,1)),tea)))

注意:我不想使用for expressionnor ,我喜欢使用像andfor loop这样的高阶函数。mapflatMap

有人可以给我一个提示吗?

4

1 回答 1

4
words.groupBy(_._1).mapValues(_.map(_._2).toList.sorted).toList
于 2012-10-30T14:11:32.820 回答