我有(Regex - > Int)的地图,我想获得与输入的字符串匹配的键的值。 为了解释我有一个地图:
(("BR.*".r -> 100),("HA.*".r -> 90),("GE*".r -> 100))
当我有一个字符串"BRUSH"
时,如何获得值100?
这个问题似乎与问题here
相反谢谢!
答案 0 :(得分:0)
您可以通过迭代地图并尝试将输入与正则表达式键匹配来实现:
map: scala.collection.immutable.Map[scala.util.matching.Regex,Int] = Map(BR.* -> 100, HA.* -> 90, GE* -> 100)
res0: Option[Int] = Some(100)
结果:
val pop = sc.textFile("population.csv")
.filter(line => !line.startsWith("Country"))
.map(line => line.split(","))
.map { case Array(CountryName, CountryCode, Year, Value) => (CountryName, CountryCode, Year, Value) }
但请注意,这种方法对于大量密钥来说效率很低。请考虑使用特殊数据结构like trie。