Частотный анализ: словарь как модель данных задачи
Автор: Казачкин Даниил Михайлович · Обновлено
Словарь хранит пары “ключ — значение”. Для школьника это удобный способ считать частоты, хранить результаты участников, связывать имя с баллом или быстро проверять накопленные…
Словарь хранит пары “ключ — значение”. Для школьника это удобный способ считать частоты, хранить результаты участников, связывать имя с баллом или быстро проверять накопленные данные.
В списке элемент ищут перебором. В словаре значение получают по ключу почти сразу. Поэтому словари полезны в задачах ОГЭ, ЕГЭ и олимпиад, где нужно много раз отвечать на вопрос “сколько раз встретилось значение?” или “какой результат связан с этим именем?”.
Частотный словарь
Частотный анализ показывает, сколько раз встречается каждый символ, слово или число.
text = input().lower()
freq = {}
for char in text:
if char.isalpha():
freq[char] = freq.get(char, 0) + 1
for char, count in sorted(freq.items()):
print(char, count)Метод get возвращает текущее значение по ключу, а если ключа еще нет — значение по умолчанию. В примере это 0.
Когда словарь лучше списка
Словарь выбирают, когда у данных есть понятный ключ: логин ученика, номер команды, слово, буква, код товара, город. Если нужно просто хранить порядок элементов, достаточно списка. Если нужно быстро искать по имени или считать количество повторений, словарь обычно удобнее.
Типовые ошибки
Первая ошибка — обращаться к ключу, которого еще нет. Тогда программа получает исключение. Используйте get или заранее проверяйте if key in dictionary.
Вторая ошибка — путать ключи и значения. Ключ должен быть устойчивым идентификатором, а значение — тем, что мы хотим хранить или обновлять.
Словари помогают перейти от простых циклов к задачам на анализ данных. Это важный шаг для школьной информатики, потому что многие экзаменационные задачи сводятся к подсчету частот и поиску по признаку.
Практикум: частоты слов с правилом ничьей
Нормализуйте строку Кот, пёс, кот; ПЁС кот: приведите регистр, удалите выбранные знаки и разделите на слова. Постройте словарь частот, затем найдите самое частое слово. До реализации определите правило ничьей: первое встретившееся или лексикографически меньшее. Проверьте пустой текст, одно слово и два лидера с одинаковой частотой. Сравните сумму всех значений словаря с количеством обработанных слов — это простой инвариант, обнаруживающий потерю или двойной подсчёт.
Контрольная точка
Почему словарь удобнее списка пар для обновления частоты каждого слова? Объясните операцию «получить прежнее значение или ноль» и отдельно укажите, почему порядок выбора лидера всё равно требует явного правила.
Частые вопросы
Что хранится в ключе и значении частотного словаря?
Ключом служит нормализованный объект подсчёта, например слово в нижнем регистре, а значением — число его появлений. Разные варианты написания нужно привести к выбранной форме до обновления словаря.
Связанные исследования
- MapReduce: map, shuffle и reduce на примере Word Count — Разбираем MapReduce без магии: map, shuffle и reduce, Word Count на Python, повтор задач, combiner и границы пакетной модели.
Источники
- Босова Л.Л. Информатика. Базовый курс: учебник для 7-9 классов. - М.: БИНОМ. Лаборатория знаний.
- Поляков К.Ю., Еремин Е.А. Информатика. 10-11 классы. Углубленный уровень.
- Python Documentation: The Python Tutorial.