You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何使用open函数读取文件时仅统计最后一行的词频?

问题原因与解决方法

你的代码核心问题是遍历单词的for word in words:循环没有缩进在逐行读取文件的for line in file:循环内部。

逐行读取文件时,每循环一次都会把当前行的单词列表赋值给words变量,但因为统计单词的循环在外面,只有当所有行都读完后,才会执行一次统计——这时候words里只存着最后一行的单词,自然只能统计到最后一行的词频。

修正后的代码

# 用with语句自动管理文件,避免忘记关闭
with open('ssss.txt', 'r') as file:
    dict1 = {}
    for line in file:
        line = line.strip()
        line = line.lower()
        words = line.split(" ")
        # 把统计单词的循环缩进进来,每读一行就统计一行的单词
        for word in words:
            # 用get方法简化计数逻辑
            dict1[word] = dict1.get(word, 0) + 1

print(dict1)
print("The top 10 words with maximum occurence are:")
# 可补充排序取前10的逻辑
# sorted_items = sorted(dict1.items(), key=lambda kv: kv[1], reverse=True)
# print(sorted_items[:10])

额外优化建议

  • 使用with语句打开文件,代码块结束后会自动关闭文件,避免资源占用问题。
  • 用dict.get(word, 0)替代手动判断键是否存在,代码更简洁。
  • 如果需要处理带标点的文本,可以用re.findall(r'\w+', line)提取单词,避免把标点当成单词的一部分。

内容的提问来源于stack exchange,提问作者aryanoberoi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 02:25:51