【发布时间】:2014-01-30 01:52:00
【问题描述】:
嘿,我有这样的地图:
val valueParameters = Map("key1"->"value","anotherkey1"->"value","thirdkey1"->"value","key2"->"value","anotherkey2"->"value","thirdkey2"->"value")
和模式:
val pattern = """(?<=[a-zA-Z])\d{1,2}""".r
val result = valueParameters.groupBy(x=>pattern.findAllIn(x._1).next().toInt).toSeq.sortBy(_._1).toMap
它给出:Map[Int,Map[String,String],我想从第二个地图的第一个字符串中删除我不再需要的数字,所以我可以:result(1)("key") not result(1)("key1 ")
【问题讨论】:
-
这似乎效率不高,但你可以做类似
result.mapValues{case (key, value) => ('removenumberfromkeyhere', value)} -
小心使用 mapValues。这是一个惰性操作,所以这可能不是您想要的,因为每次访问都会进行计算。见issues.scala-lang.org/browse/SI-4776
标签: scala