2024-05-17 19:44:57 发布
网友
我正在做一个简短的作业,我必须在一个.txt文件中阅读,并创建一个字典,其中键是句子中的单词数,值是特定长度的句子数。我已经看了文件,并确定了每个句子的长度,但我在创建字典时遇到了困难。在
我已经在使用一个循环来更新下面的代码:
for snt in sentences: words = snt.split(' ') sDict[len(words)]+=1
它在第一次迭代时给了我一个关键错误。我确信这与我的语法有关,但我不确定如何更新字典中现有的条目。在
初始化字典时,它以空开始。接下来要做的是查找一个键以便更新它的值,但是这个键还不存在,因为字典是空的。对代码的最小更改可能是使用getdictionary方法。而不是这样:
get
sDict[len(words)]+=1
使用这个:
get方法查找一个键,但如果该键不存在,则会给您一个默认值。默认值是None,您可以指定一个不同的默认值,这是第二个参数,在本例中是0。在
None
0
更好的解决方案可能是collections.Counter,它处理计数事件的常见用例:
collections.Counter
import collections s = map(str.split, sentences) sDict = collections.Counter(map(len, s))
defaultdicts是为了这个目的而发明的:
defaultdicts
from collections import defaultdict sDict = defaultdict(int) for snt in sentences: sDict[len(snt.split())] += 1
如果您被限制在赋值上下文中使用纯字典,那么您需要在递增其值之前测试该键是否存在,以防止KeyError:
KeyError
初始化字典时,它以空开始。接下来要做的是查找一个键以便更新它的值,但是这个键还不存在,因为字典是空的。对代码的最小更改可能是使用
get
dictionary方法。而不是这样:使用这个:
^{pr2}$get
方法查找一个键,但如果该键不存在,则会给您一个默认值。默认值是None
,您可以指定一个不同的默认值,这是第二个参数,在本例中是0
。在更好的解决方案可能是
collections.Counter
,它处理计数事件的常见用例:defaultdicts
是为了这个目的而发明的:如果您被限制在赋值上下文中使用纯字典,那么您需要在递增其值之前测试该键是否存在,以防止
^{pr2}$KeyError
:相关问题 更多 >
编程相关推荐