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

为什么用于词频统计的Python字典推导式无法得到正确运行结果?

字典推导式统计词频异常问题分析

错误原因

  • 字典推导式的执行逻辑是先完成所有键值对的计算,再一次性生成完整字典赋值给变量,推导式运行过程中不会实时更新你提前定义的空usage_dict
  • 推导式内调用usage_dict.get(word, 0)时,每次读取的都是初始的空字典,拿到的默认值永远为0,因此每个键的计算结果都是0 + 1 = 1
  • 字典键具有唯一性,重复出现的单词会被后续生成的同键、值为1的键值对覆盖,最终所有单词的计数都为1

正确实现方案

方案1:使用collections.Counter(推荐)

这是Python官方提供的专门用于计数的工具类,代码简洁效率高:

from collections import Counter
user_input = input().lower().split()
usage_dict = dict(Counter(user_input))
print(usage_dict)

方案2:普通for循环实现

无需导入模块,兼容性好:

user_input = input().lower().split()
usage_dict = {}
for word in user_input:
    usage_dict[word] = usage_dict.get(word, 0) + 1
print(usage_dict)

方案3:推导式实现(仅适合短文本)

如果必须使用推导式,可以结合去重后的单词集合统计次数:

user_input = input().lower().split()
usage_dict = {word: user_input.count(word) for word in set(user_input)}
print(usage_dict)

注意:该方案每次调用count都会遍历整个输入列表,时间复杂度为O(n²),长文本场景下效率极低,不推荐使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 17:06:05