我有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 expression
也不使用for loop
,我喜欢使用高阶函数,例如map
和flatMap
。
有人能给我一个暗示吗?
答案 0 :(得分:4)
words.groupBy(_._1).mapValues(_.map(_._2).toList.sorted).toList