Войти Создать аккаунт

Сверка двух таблиц · Шаг 1 из 4

Строки по ключу

Светлана Игоревна ведёт кадры. Раз в месяц она выгружает из учётной программы список сотрудников, и у каждого есть табельный номер — по нему строки двух выгрузок и находят друг друга. Беда в том, что в таблице, поправленной руками, номер иногда повторяется, и тогда сверка врёт молча.

Что сделать

Разложите строки таблицы в словарь по ключу — значению ключевых столбцов; повтор ключа — ошибка с номерами строк.

Что приходит

  • stroki — строки таблицы, словари «столбец → значение», как их даёт csv.DictReader

  • klyuch — список ключевых столбцов: ["tabel"] или, когда одного мало, ["otdel", "tabel"]

Что вернуть

Словарь «кортеж значений ключа → строка»: {("1043",): {…}, ("1044",): {…}}; повтор ключа или нет столбца — ValueError.

Допишите функцию po_klyuchu в редакторе справа. Результат верните через return — то, что напечатано, на проверку не влияет.

В проекте

Программа раскладывает этой функцией обе таблицы и передаёт два словаря шагам 2 и 3. Текст вашей ошибки она показывает как есть, с названием таблицы: «Новая таблица: ключ 1043 повторяется: строки 2 и 4».

Перед вызовом
stroki = [{"tabel": "1043", "fio": "Иванова А. С.", "dolzhnost": "бухгалтер"},
          {"tabel": "1044", "fio": "Петров В. В.", "dolzhnost": "водитель"}]
Вызов
po_klyuchu(stroki, ["tabel"])
Вернуть
{('1043',): {'tabel': '1043', 'fio': 'Иванова А. С.', 'dolzhnost': 'бухгалтер'}, ('1044',): {'tabel': '1044', 'fio': 'Петров В. В.', 'dolzhnost': 'водитель'}}
Ctrl+Enter — проверить

Обсуждение

Вопросов пока нет.

Войдите, чтобы спросить.