在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以外的任何其他操作,即函数,则此操作将不起作用