Как построить словарь длин строк, используя цикл for?
Я довольно новичок в Python, но я знаю основные команды. Я пытаюсь создать цикл for, который, при наличии списка предложений, добавляет ключ для длины каждого предложения. Значением каждого ключа будет частота этой длины предложения в списке, чтобы формат выглядел примерно так:
dictionary = {length1:frequency, length2:frequency, etc.}
Кажется, я не могу найти какие-либо ранее отвеченные вопросы, которые конкретно касаются этого - создание ключей с использованием основных функций, а затем изменение значения ключа по частоте этого результата. Вот код, который у меня есть:
dictionary = {}
for i in sentences:
dictionary[len(i.split())] += 1
Когда я пытаюсь запустить код, я получаю это сообщение:
Traceback (most recent call last):
File "<pyshell#11>", line 2, in <module>
dictionary[len(i.split())] += 1
KeyError: 27
Любая помощь в исправлении моего кода и объяснение того, где я ошибся, будет очень признательна!
1 ответ
Я думаю, что это решит вашу проблему в Python 3:
sentences ='Hi my name is xyz'
words = sentences.split()
dictionary ={}
for i in words:
if len(i) in dictionary:
dictionary[len(i)]+=1
else:
dictionary[len(i)] = 1
print(dictionary)
Выход:
{2: 3, 3: 1, 4: 1}
В словаре сначала вы должны присвоить ключу какое-то значение, затем только вы можете использовать это значение для дальнейших вычислений, иначе есть альтернативное использование defaultdict
назначить значение по умолчанию для каждой клавиши.
Надеюсь это поможет.