MiddleДебаггингРедкоЕщё не отвечали
Почему этот счётчик слов возбуждает KeyError?
Это считает частоты слов, но падает на первом же слове.
def count_words(text):
counts = {}
for w in text.split():
counts[w] += 1
return counts
Найдите и исправьте ошибку.
counts[w] += 1 читает counts[w] до того, как ключ существует → KeyError при первой встрече каждого слова. Решение: counts[w] = counts.get(w, 0) + 1, либо collections.defaultdict(int), либо просто collections.Counter(text.split()).
- ✗Считать, что
dict[k] += 1авто-инициализирует отсутствующий ключ нулём - ✗Винить
splitили возврат, а не чтение отсутствующего ключа - ✗Не использовать
defaultdictилиCounter
- →Как
collections.defaultdict(int)меняет поведение при отсутствующем ключе? - →Когда
dict.setdefaultпредпочтительнееgetдля этого паттерна?