2017-08-29 176 views
0

我有一个像下面斯卡拉在元组列表中的每个第一要素获得的第二个元素的最大

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

我想从上面创建列表像下面列表元组的列表

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

只有一个第一个元素和第二个元素的MAX。我怎样才能做到这一点?

+1

_._ 1).map {case(common,lst)=>(common,lst.reduce(_ max _))} – yalkris

+0

因此,您在尝试时遇到了什么问题? – Dima

+0

@Dima在进入我的完整评论之前按下了返回。这是我得到当我试图 错误:值最大不是(String,Int)的成员 – yalkris

回答

1

因为你只需要相同的值的第一个元素一旦伴随着相应的第二个元素的最大值,这也从改写了一个问题,for every distinct 1st element in the tuple list, list the max 2nd element区别:尝试这个 list.groupBy(

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)) 
+0

完美。更好。 – yalkris

相关问题