我想找到具有最大第二元素的元组:
mylist.reduce { (x, y) => {
if (y._1 > x._1) y
else x
}}
其中x
和y
的类型为Tuple3[DenseVector[Int], Double, PipelineModel]
。
我收到>
无法解决的错误。那是怎么回事?使用foldLeft
并提供零元素也无济于事。
我可以更好地编写代码吗? (我觉得它看起来不太好。)
答案 0 :(得分:2)
在三元组中(a,b,c)triplet._2
为您提供第二个元素。
_1
给出第一个元素
_2
给出第二个元素
_3
给出第三个元素
元组不是零基础。
scala> val triplet = (1, 2, 3)
triplet: (Int, Int, Int) = (1,2,3)
scala> triplet._1
res0: Int = 1
scala> triplet._2
res1: Int = 2
scala> triplet._3
res2: Int = 3
回答1:
在您的情况下,triplet._1
给出了三元组(tuple3)的第一个元素,即DenseVector[Int]
元素,您无法使用>
。这就是>
未解决的原因。
回答2:
l.maxBy(_._2)
Scala REPL
scala> val l = List((1, 2, 3), (0, 0, 1))
l: List[(Int, Int, Int)] = List((1,2,3), (0,0,1))
scala> l.maxBy(_._2)
res1: (Int, Int, Int) = (1,2,3)
l.reduce { (x, y) => if (x._2 > y._2) x else y }
Scala REPL
scala> val l = List((1, 2, 3), (0, 0, 1))
l: List[(Int, Int, Int)] = List((1,2,3), (0,0,1))
scala> l.reduce { (x, y) => if (x._2 > y._2) x else y }
res3: (Int, Int, Int) = (1,2,3)