Коллекции: массивы, срезы и отображения

Map: создание, чтение, запись, удаление и проверка ключа

Содержание курса

Удаление из словаря отмеченных слов

Словарь частот — привычный инструмент везде, где нужно отслеживать, сколько раз встречается то или иное слово: в анализе текста, при составлении статистики, в игровой логике. Такой словарь может быть подготовлен заранее и уже содержать записи, в том числе слова с нулевой частотой — зарезервированные позиции, которые ещё не получили реальных появлений. Когда поступает новый список слов, возможно включающий повторы, каждое появление увеличивает соответствующую частоту в словаре.

После того как частоты обновлены, возникает необходимость убрать из словаря одну конкретную запись — пометить её как более не актуальную. Удаление производится по ключу, и здесь важна точность: нужно отличить ситуацию, когда ключ действительно присутствовал в словаре и был успешно удалён, от ситуации, когда такого ключа в словаре никогда не было. Ноль в качестве значения не означает отсутствия ключа, поэтому проверка строится именно на факте присутствия или отсутствия ключа, а не на его числовом значении.

Программа должна вернуть итоговое состояние словаря со всеми оставшимися частотами и ясно обозначить, состоялось ли удаление — то есть был ли указанный ключ найден и изъят из словаря.

Что уже дано

Начальная map может содержать слово со значением 0; это всё равно существующий ключ.

Что нужно сделать

Реализуйте TrackUnknownWords(words []string, initial map[string]int, remove string) UnknownWordReport. Скопируйте начальные частоты, прибавьте появления слов из words, затем удалите ключ remove. Поле Removed должно быть true, если ключ существовал перед удалением, даже когда его значение было нулём. Поле Counts содержит оставшиеся частоты; порядок map не является частью результата.

Ввод и вывод

Проверяющая система вызывает функцию с подготовленным списком слов, начальными частотами и ключом удаления. Она сравнивает возвращаемые Counts и Removed. Читать stdin и печатать результат не нужно.

О данных в ответах

Используйте учебные данные. Не вставляйте пароли, токены, ключи доступа, паспортные и банковские данные, а также персональные данные других людей. Политика обработки данных.

Проверяется тестами (1)
  • Тест 1
    Ввод
    [["go","map","go"],{"old":2},"map"]
    Ожидаемый вывод
    {"Counts":{"go":2,"old":2},"Removed":true}
Функция TrackUnknownWordsGo · Go 1.27 (Modal)
Как проверяется решение

Функция из package main вызывается автоматически. Возвращайте результат, main() и печать ответа не нужны. Значения JSON сравниваются без учёта порядка ключей объекта.

Отправьте решение, чтобы увидеть результаты тестов.