Словари · 22 из 23
Две картотеки
На время ремонта библиотека работала в двух местах: Зинаида Петровна — в читальном зале, помощница Оля — на абонементе. Каждая правила свою копию картотеки читателей: телефоны, адреса, отметки. Теперь копии надо свести в одну. По каждому полю верят более поздней правке, а стёртое поле остаётся стёртым, если стирали позже, чем вписывали. Где обе правили одно и то же в один день и по-разному, Зинаиде Петровне нужен список: она позвонит читателю и уточнит.
Что сделать
Сведите две копии картотеки в одну: по каждому полю — более поздняя правка, а одновременные разные правки — в список спорных.
Что приходит
pervayaиvtoraya— две копии: фамилия → {поле → (значение, дата правки)}
Что вернуть
Пару (картотека, спорные): картотека — фамилия → {поле → значение}, спорные — список пар (фамилия, поле) по возрастанию.
Допишите функцию svesti в редакторе справа.
Результат верните через return — то, что
напечатано, на проверку не влияет.
У Иванова в первой копии телефон «111» от 1 октября, во второй — «222» от 5 октября и адрес от 2 октября. Позже правили во второй, поэтому телефон «222», адрес берётся оттуда же; споров нет.
svesti({"Иванов": {"telefon": ("111", "2026-10-01")}}, {"Иванов": {"telefon": ("222", "2026-10-05"), "adres": ("Лесная, 3", "2026-10-02")}})
({'Иванов': {'adres': 'Лесная, 3', 'telefon': '222'}}, [])
Копия — словарь: фамилия читателя → словарь полей; поле → пара (значение, дата), дата — строка ГГГГ-ММ-ДД. Значение None значит «поле стёрли в этот день».
Для каждого читателя и каждого его поля, которое есть хотя бы в одной копии:
- поле только в одной копии — берётся оттуда;
- в обеих — берётся то, где дата позже;
- даты равны и значения равны — это одна и та же правка;
- даты равны, а значения разные — берётся значение из
pervaya, а пара(фамилия, поле)попадает в спорные.
В сведённой картотеке — значения без дат. Поле, где победило None, в неё не попадает; читатель, у которого не осталось ни одного поля, — тоже. Фамилии идут по алфавиту, поля у каждого читателя — по алфавиту. Спорные — список пар по возрастанию. Копии, которые пришли, не меняются.
Обсуждение
Вопросов пока нет.
Войдите, чтобы спросить.