我有一个类似于以下内容的元组列表:
(("String1", Value1), ("String2", Value2), ...)
其中字符串为String
且值为Double
。 scala中是否有方法可以实现以下目的:
1)在列表中搜索特定的字符串值。
2)如果我们有一个匹配,则返回与该字符串相关联的值。
3)如果我们有一个未命中,则返回-1。
这个元组序列是在格式为RDD [K,V]的RDD上使用collect
创建的,其中键是字符串,val是双精度数。最初我打算在RDD上使用查找,但看起来这项工作需要在驱动程序上完成(因此collect
)。
答案 0 :(得分:1)
也许您可以先尝试将其转换为地图:
scala> val collection = Map(("hello", 1), ("world", 2))
collection: scala.collection.immutable.Map[String,Int] = Map(hello -> 1, world -> 2)
scala> collection getOrElse ("hello", -1)
res3: Int = 1
scala> collection getOrElse ("scala", -1)
res4: Int = -1
答案 1 :(得分:1)
val m = list.toMap.withDefaultValue(-1d)
// 1 and 2
m("String1") // Value1
// 3
m("Some other") // -1d