对于元组列表中的每个第一个元素的scala获取第二个元素的最大值

时间:2017-08-29 23:26:06

标签: scala list unique

我有一个像下面这样的元组列表

List((a,1), (a,2), (b,2), (b,1)) 

我想从上面的列表中创建如下所示的列表

List((a,2), (b,2))

只有第一个元素和第二个元素的MAX。我怎么能这么简洁地做到这一点?

1 个答案:

答案 0 :(得分:1)

由于您只需要具有相同值的第一个元素以及相应的第二个元素的最大值,因此将问题重新表述为for every distinct 1st element in the tuple list, list the max 2nd element没有区别:

val l = List(("a",1), ("a",2), ("b",2), ("b",1))

l.groupBy(_._1).
  mapValues( _.map(_._2).max ).
  toList
// res1: List[(String, Int)] = List((b,2), (a,2))