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

如何用Python字典统计文本单词频率?当前代码仅统计字母

解决单词频率统计的问题

嘿,你遇到的问题其实很典型——你的代码现在是在遍历字符串的单个字符,而不是你想要的单词!这就是为什么字典里只统计了字母的出现次数。

问题出在哪?

你写的for item in text_string会把字符串拆分成一个个独立的字符(比如"hello world"会被拆成'h','e','l','l','o',' ','w','o','r','l','d'),循环里的item每次都是单个字母,自然统计的是字母频率,不是单词。

怎么改?

要统计单词,第一步得把处理好的文本分割成单词列表,然后遍历这个列表就行。这里给你两种方案:

方案1:手动实现字典统计

先把字符串用split()方法拆成单词(split()默认按空格分割,正好适配你已经处理好的文本),然后遍历单词列表:

# 假设text_string已经是处理好的、仅含字母和空格的字符串
word_counts = {}
# 分割字符串为单词列表
words = text_string.split()

for word in words:
    # 统一转小写,避免大小写差异(比如"Hello"和"hello"算同一个单词)
    normalized_word = word.lower()
    if normalized_word in word_counts:
        word_counts[normalized_word] += 1
    else:
        word_counts[normalized_word] = 1

print(word_counts)

方案2:用Python标准库简化代码

Python的collections模块里有个Counter类,专门用来统计可迭代对象的元素频率,用它能省掉很多手动判断的代码:

from collections import Counter

# 分割字符串+统一小写,直接传入Counter统计
words = text_string.split()
word_counts = Counter(word.lower() for word in words)

print(word_counts)

这个方法不仅简洁,还自带很多实用功能(比如most_common(n)可以快速找出出现次数最多的n个单词)。

小提示

如果你的文本处理步骤还可能残留一些特殊字符(虽然你说已经移除了),可以用正则表达式先提取所有单词,比如:

import re
# 提取所有由字母组成的单词
words = re.findall(r'[a-zA-Z]+', text_string)

不过如果你的预处理已经做得很干净,这一步就不需要啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:39:23