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

Python列表中提取128个最不常见词的高效实现方案问询

高效提取列表中128个最不常见词的解决方案

嘿,这个需求我太熟悉了!既然你已经用collections.Counter搞定了高频词统计,那提取低频词完全可以用它自带的优化方法来实现,效率直接拉满,不用自己造轮子。

最直接高效的实现方式

Counter的most_common()方法其实支持传入负数参数——当你传入-N时,它会返回频率从低到高排列的前N个元素,刚好对应你要的最不常见词。代码示例如下:

from collections import Counter

# 假设你的原始词列表是words_list
word_counter = Counter(words_list)

# 提取128个最不常见词,结果是(词, 频率)的元组列表,按频率升序排列
least_common_128 = word_counter.most_common(-128)

# 如果只需要词本身,不需要频率,可以快速转换:
least_common_words = [word for word, count in least_common_128]

为什么这个方法高效?

  • 统计频率阶段:Counter基于哈希表实现,统计整个列表的时间复杂度是O(n)(n是列表总长度),速度极快。
  • 提取低频词阶段:most_common()内部使用堆排序算法,取前128个低频词的时间复杂度是O(m log 128)(m是去重后的词数量),比手动对所有词排序再取前128个(O(m log m))高效得多,尤其是当不同词的数量很大时,差距会非常明显。

处理频率相同的情况

如果多个词的频率相同,且刚好卡在第128个的位置,most_common()会默认按词的字典序来排序,保证结果的稳定性。如果你需要自定义排序规则,可以在获取结果后二次排序,比如:

# 频率相同时按词的长度排序(示例)
least_common_128_sorted = sorted(word_counter.most_common(-128), key=lambda x: (x[1], len(x[0])))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 06:54:09