Словари · 23 из 23
Формуляры переехали
Библиотеку трижды переводили на новую систему, и каждый раз номера формуляров меняли: старый — на промежуточный, промежуточный — на новый. Таблица замен свалена в одну кучу, а у Зинаиды Петровны в руках старые бумажные формуляры: по каждому номеру нужно найти, какой он сейчас. Переезды шли волнами, и цепочки бывают длиной в сотни тысяч. А если в таблицу закралась ошибка и номера ходят по кругу, это надо сказать, а не крутиться вечно.
Что сделать
По таблице замен найдите для каждого номера формуляра, какой он сейчас — в конце цепочки замен.
Что приходит
zameny— словарь «номер → на какой его заменили»
Что вернуть
Словарь «номер из таблицы → окончательный номер», ключи по возрастанию; замены по кругу — ValueError.
Допишите функцию okonchatelnye в редакторе справа.
Результат верните через return — то, что
напечатано, на проверку не влияет.
okonchatelnye({"Ф-1": "Ф-3", "Ф-3": "Ф-12", "Ф-5": "Ф-4"})
{'Ф-1': 'Ф-12', 'Ф-3': 'Ф-12', 'Ф-5': 'Ф-4'}
Каждый ключ zameny заменили на его значение. Окончательный номер — тот, до которого доходит цепочка замен: номер, которого среди ключей таблицы нет.
Ответ — словарь для каждого ключа таблицы, ключи по возрастанию (как строки).
Если цепочка возвращается к номеру, который в ней уже был (в том числе номер заменили сам на себя), — поднимите ValueError.
Таблица бывает в сотни тысяч замен, а цепочка — во всю таблицу: ответ нужен за доли секунды. Рекурсия глубиной в цепочку упадёт.
Обсуждение
Вопросов пока нет.
Войдите, чтобы спросить.