Противоречивые оценки отзывов
Условие
В файле data.csv хранится выгрузка отзывов о мобильном приложении. Один и тот же отзыв может встречаться в выгрузке несколько раз, например после повторной синхронизации данных.
Строка считается относящейся к запросу, если значение в её столбце app_version совпадает с версией из stdin. Ключом отзыва является review_id.
Для каждого ключа рассматриваются все непустые значения rating в строках выбранной версии. Ключ называется противоречивым, если среди его непустых оценок встречаются хотя бы два различных значения. Требуется вывести число противоречивых ключей review_id. Пустые оценки игнорируются. Если у ключа нет непустых оценок или есть только одно различное непустое значение, он не является противоречивым. При равенстве оценок в нескольких строках противоречия не возникает.
Формат ввода
В файле data.csv в кодировке UTF-8 находится таблица с разделителем-запятой и заголовком. В ней имеются столбцы review_id, user_id, app_version, rating, review_text.
В stdin подаётся одна строка с версией приложения app_version. Необходимо учитывать только строки файла, у которых версия совпадает с этой строкой полностью.
Формат вывода
Выведите одно целое число — количество противоречивых ключей review_id среди строк выбранной версии.
Ограничения
В файле содержится от 1 до 2000 строк с данными, не считая заголовка.
Длина review_id составляет от 1 до 20 символов, длина user_id — от 1 до 20 символов, длина app_version — от 1 до 12 символов, длина review_text — от 0 до 80 символов.
Поле rating либо пустое, либо содержит целое число от 1 до 5. Версия из stdin имеет длину от 1 до 12 символов. В файле могут отсутствовать строки выбранной версии.
Решить задачу с автопроверкой на Python →
Куда дальше
- Школьный этап ВсОШ по информатике — как устроен первый этап и план подготовки за четыре недели
- С нуля до олимпиады: маршрут — сколько занимает язык, какие приёмы нужны и к какому этапу это ведёт
- Python на олимпиадах — где языка хватает с запасом, а где начинают значить лимиты — с замерами