python - 使用整数键更新字典

标签 python dictionary

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

我已经初始化了字典并尝试使用以下代码更新它(在循环遍历句子的 for 循环中):

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

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

最佳答案

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

sDict[len(words)]+=1

使用这个:

sDict[len(words)] = sDict.get(len(words), 0) + 1

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

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

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

关于python - 使用整数键更新字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39421366/

相关文章:

javascript - JS - 将字符串列表映射到等长矩阵的有效方法

java - 如何在 bean 列表中搜索属性?

python - 如何在不使用pip的情况下安装pyqt5和pyqt5-tools?

python - python 的 Tkinter 中的 Windows 进度条

python - Pandas 无法使用 pandas 读取带有额外引号字符的 CSV 文件

python - 从 SeqIO.index 生成的字典中删除一个项目

ios - 错误: Type [AnyHashable: Any]?没有下标成员(Swift)

http - 使用http时使用delete函数删除 map 条目

python - 访问用户的 twitter HomeTimeline

python - 打开元素包装并添加新元素