У меня есть карта записей типа Map [String, String] и карта поиска типа Map [String, Map [String, String]].Моя цель - найти совпадение во второй карте на первой карте, и когда у меня есть совпадение ключей, мне нужно заменить значение в первом словаре поиском второго словаря.Пример прояснит ситуацию.
До сих пор я придумал алгоритм, но получаю странный ответ Some (e) и Some (t).
Первая записькарта выглядит следующим образом:
val entries = Map("fruit" -> "aaa", "animal" -> "bbb", "person" -> "jjj")
Вторая карта выглядит следующим образом:
val lookup = Map("fruit" -> Map("ccc" -> "orange", "aaa" -> "apple"),
"animal" -> Map("zzz" -> "dog", "bbb" -> "cat"))
Ожидается следующий результат (примечание: «персона» не была правильно включена врезультат, поскольку для него нет соответствия):
val result = Map("fruit" -> "apple", "animal" -> "cat")
Алгоритм, который я придумал, следующий:
val res = for{ (k, ev) <- entries
lv <- lookup.get(k).get(ev)} yield (k, lv)
этот алгоритм дает мне следующий результат, и я понятия не имею,почему:
Map(fruit -> e, animal -> t)
Откуда взялись e и t?