Эквивалент ваших данных в Scala выглядит следующим образом:
val m1: List[(String, List[(String, Any)])] =
List("a" -> List("0" -> "R", "1" -> null, "2" -> null, "3" -> 12.25, "4" -> null),
"b" -> List("0" -> "R", "1" -> null, "2" -> null, "3" -> 34.75, "4" -> null),
"c" -> List("0" -> "R", "1" -> null, "2" -> null, "3" -> 56.25, "4" -> null),
"d" -> List("0" -> "R", "1" -> null, "2" -> null, "3" -> 45.65, "4" -> null))
Получив данные в этом формате, вы можете извлечь нужные данные следующим образом:
val keys = List("a", "d")
val field = 3
m1.collect{ case (k, v) if keys.contains(k) => (k, v(field)._2) }
Если порядок данных не имеет значения, вы можете использовать Map
вместо List
, а код будет немного чище:
val field = "3"
m1.collect{ case (k, v) if keys.contains(k) => (k, v(field)) }
Это также позволит вам удалить значения null
и избегайте использования Any