List Scala筛选元组列表中元素的条件和

List Scala筛选元组列表中元素的条件和,list,scala,filter,sum,List,Scala,Filter,Sum,我是Scala新手,需要一些关于如何组合的帮助 对元组列表进行筛选和求和 我需要的是一个过滤元组列表的整数之和 基本上,这个问题的答案是: 所有设定权重的总和是多少 以下样本列表的结果应为20 清单非常简单: val ln = List( ("durationWeight" , true, 10), ("seasonWeight" , true, 10), ("regionWeight" , fal

我是Scala新手,需要一些关于如何组合的帮助 对元组列表进行筛选和求和

我需要的是一个过滤元组列表的整数之和 基本上,这个问题的答案是:

所有设定权重的总和是多少

以下样本列表的结果应为20

清单非常简单:

     val ln = List( ("durationWeight" , true, 10),
                    ("seasonWeight"   , true, 10),
                    ("regionWeight"   , false, 5),
                     ("otherWeight"   , false, 5)
根据布尔标志筛选列表是一个简单的过程:

     val filtered = ln.filter { case(name, check, value) => check == true  }
这会给我返回想要的元组。把它们加起来似乎是可行的 带一张地图,后跟总和:

  val b = filtered.map{case((name, check, value) ) => value}.sum
它返回所有设置权重的所需总和

但是,如何在一个步骤中结合过滤、映射和求和, 最理想的是在一个优雅的班轮


感谢您的帮助。

另一种方法:

ln.collect{ case (_, true, value) => value }.sum
(0 /: ln)((sum,x) => if (x._2) sum + x._3 else sum)

另一种方法是:

(0 /: ln)((sum,x) => if (x._2) sum + x._3 else sum)

谢谢,这正是我想要的。谢谢,这正是我想要的。欢迎来到堆栈溢出,马文。汉森!作为未来的提示,没有必要编辑您的问题以反映问题已解决或包含解决方案-通过将答案标记为已接受,该功能已经内置。谢谢欢迎来到Stack Overflow,Marvin,Hansen!作为未来的提示,没有必要编辑您的问题以反映问题已解决或包含解决方案-通过将答案标记为已接受,该功能已经内置。谢谢这肯定会比先收款再求和快。这肯定会比先收款再求和快。