Как построить словарь длин строк, используя цикл 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 назначить значение по умолчанию для каждой клавиши.

Надеюсь это поможет.

Другие вопросы по тегам