Как искать карту и обновлять значение с помощью фильтра в Scala

#scala

#scala

Вопрос:

У меня есть карта colValues: Map[Int, String] , и данные будут:

 (15043 -> "226", 15044 -> "NA", 15045 -> "36", 15046 -> "0", 15047 -> "47", 15048 -> "NA")
  

Я хочу изменить все значения с «NA» на «0» colValues , нам не нужна другая переменная. Другими словами, после обработки colValues будет :

 (15043 -> "226", 15044 -> "0", 15045 -> "36", 15046 -> "0", 15047 -> "47", 15048 -> "0")
  

Комментарии:

1. Это довольно простая .map() операция. Что вы пробовали? Что не сработало?

2. Вам это не нужно filter . Это пример вопроса XY

Ответ №1:

Вам нужно только map

 colValues.map { case (a, b) => if (b == "NA") a -> "0" else a -> b }
  

Ответ №2:

Вы можете сделать это с помощью mapValues :

 colValues.view.mapValues(v => if (v == "NA") "0" else v).toMap
  

Скорее всего, вы хотите преобразовать в a Map[String, Int] , хотя. Один из способов сделать это

 colValues.view.mapValues(_.toIntOption.getOrElse(0)).toMap