在Scala中添加特定的列表元素

在Scala中添加特定的列表元素,scala,Scala,我有一个列表[(Int,Int)] 以致 {(1,5),(1,2),(1,7),(2,8),(2,3),(2,9),(3,10),(3,1),(3,12)} 我要做的是对每个(1,5)、(1,2)、(1,7) 每个(2,8)、(2,3)、(2,9)的第二个元素 以及每个(3,10)、(3,1)、(3,12) 这样我们就有了一个结果: List[Int]={14, 20, 23} 使用grouped按大小拆分列表,映射第二个值和总和,如: list.grouped(3).map(_.map(_

我有一个
列表[(Int,Int)]

以致

{(1,5),(1,2),(1,7),(2,8),(2,3),(2,9),(3,10),(3,1),(3,12)}
我要做的是对每个
(1,5)、(1,2)、(1,7)

每个
(2,8)、(2,3)、(2,9)的第二个元素

以及每个
(3,10)、(3,1)、(3,12)

这样我们就有了一个结果:

List[Int]={14, 20, 23}

使用
grouped
按大小拆分列表,映射第二个值和总和,如:

list.grouped(3).map(_.map(_._2).sum).toList
> List(14, 20, 23)

使用
grouped
按大小拆分列表,映射第二个值和总和,如:

list.grouped(3).map(_.map(_._2).sum).toList
> List(14, 20, 23)

您可以按元组的第一个元素对它们进行分组。然后,您将有一个
映射
,每个不同的第一个元素都有一个键,所有相关的第二个元素都有一个
列表

val myMap = myList.groupBy(_._1).mapValues(_.map(_._2))
现在,您可以对第二个元素进行求和或应用所需的任何其他变换操作

val mySums = myMap.mapValues(_.sum)  //Map(2 -> 20, 1 -> 14, 3 -> 23)
您可以按所需的顺序提取它们

mySums.keys.toList.sorted.map(mySums)  //res0: List[Int] = List(14, 20, 23)

您可以按元组的第一个元素对它们进行分组。然后,您将有一个
映射
,每个不同的第一个元素都有一个键,所有相关的第二个元素都有一个
列表

val myMap = myList.groupBy(_._1).mapValues(_.map(_._2))
现在,您可以对第二个元素进行求和或应用所需的任何其他变换操作

val mySums = myMap.mapValues(_.sum)  //Map(2 -> 20, 1 -> 14, 3 -> 23)
您可以按所需的顺序提取它们

mySums.keys.toList.sorted.map(mySums)  //res0: List[Int] = List(14, 20, 23)

塔克斯consideration@AqsaZahoor如果答案回答了您的问题,请批准答案-如果我想应用除求和以外的任何其他运算,即函数,那么这将不适用于Xconsideration@AqsaZahoor如果答案回答了您的问题,请批准答案-如果我想应用sum以外的任何其他操作,即函数,则此操作将不起作用