如何使用for循环构建字符串长度字典?

时间:2016-09-05 04:26:33

标签: python string list dictionary sentence

我是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 个答案:

答案 0 :(得分:2)

我认为这将解决您的问题,在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为每个键指定默认值。

希望这有帮助。