Сверка двух таблиц · Шаг 1 из 4
Строки по ключу
Светлана Игоревна ведёт кадры. Раз в месяц она выгружает из учётной программы список сотрудников, и у каждого есть табельный номер — по нему строки двух выгрузок и находят друг друга. Беда в том, что в таблице, поправленной руками, номер иногда повторяется, и тогда сверка врёт молча.
Что сделать
Разложите строки таблицы в словарь по ключу — значению ключевых столбцов; повтор ключа — ошибка с номерами строк.
Что приходит
stroki— строки таблицы, словари «столбец → значение», как их даётcsv.DictReaderklyuch— список ключевых столбцов:["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': 'водитель'}}
- Ключ строки — кортеж значений ключевых столбцов в порядке
klyuch, пробелы по краям убраны,None— пустая строка. Ключ всегда кортеж, даже из одного столбца:("1043",). - Строка, у которой весь ключ пустой, — пустая строка таблицы, она пропускается. Если пуста только часть составного ключа — это обычная строка.
- Значение словаря — сама строка, без изменений.
- Номера строк — как в файле: заголовок — строка 1, первая из
stroki— строка 2. - Ключ повторился —
ValueErrorс текстомключ <части через « / »> повторяется: строки <первая> и <эта>:ключ 1043 повторяется: строки 2 и 4,ключ склад / 7 повторяется: строки 3 и 9. - В строке нет ключевого столбца —
ValueError, в тексте имя столбца в кавычках-«ёлочках»:нет столбца «tabel».
Обсуждение
Вопросов пока нет.
Войдите, чтобы спросить.