用整数键更新字典

2024-05-17 19:44:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在做一个简短的作业,我必须在一个.txt文件中阅读,并创建一个字典,其中键是句子中的单词数,值是特定长度的句子数。我已经看了文件,并确定了每个句子的长度,但我在创建字典时遇到了困难。在

我已经在使用一个循环来更新下面的代码:

for snt in sentences:
    words = snt.split(' ')
    sDict[len(words)]+=1

它在第一次迭代时给了我一个关键错误。我确信这与我的语法有关,但我不确定如何更新字典中现有的条目。在


Tags: 文件代码intxtforlen字典作业
2条回答

初始化字典时,它以空开始。接下来要做的是查找一个键以便更新它的值,但是这个键还不存在,因为字典是空的。对代码的最小更改可能是使用getdictionary方法。而不是这样:

sDict[len(words)]+=1

使用这个:

^{pr2}$

get方法查找一个键,但如果该键不存在,则会给您一个默认值。默认值是None,您可以指定一个不同的默认值,这是第二个参数,在本例中是0。在

更好的解决方案可能是collections.Counter,它处理计数事件的常见用例:

import collections
s = map(str.split, sentences)
sDict = collections.Counter(map(len, s))

defaultdicts是为了这个目的而发明的:

from collections import defaultdict

sDict = defaultdict(int)
for snt in sentences:
    sDict[len(snt.split())] += 1

如果您被限制在赋值上下文中使用纯字典,那么您需要在递增其值之前测试该键是否存在,以防止KeyError

^{pr2}$

相关问题 更多 >