用 python 实现 输入若干个单词,用逗号隔开,输出前 k 个出现次数最多的单词,输出结果按单词出现频率由高到低排序
时间: 2024-12-17 11:53:16 浏览: 10
在Python中,你可以使用内置的数据结构如字典(dict)来记录每个单词的出现次数,然后利用`collections`模块的`Counter`类简化这个过程。接下来,可以使用`heapq`模块来找到出现次数最多的前k个单词,因为`heapq.nlargest`函数能直接返回列表中的最大元素。这里是一个简单的示例:
```python
import re
from collections import Counter
import heapq
def top_k_words(input_string, k):
# 使用正则表达式提取单词并转换为小写
words = re.findall(r'\b\w+\b', input_string.lower())
# 计算每个单词的出现次数
word_count = Counter(words)
# 找出出现次数最多的前k个单词
top_k = heapq.nlargest(k, word_count.items(), key=lambda x: x[1])
# 按照频率从高到低排序
sorted_top_k = sorted(top_k, key=lambda x: x[1], reverse=True)
return [word for word, count in sorted_top_k]
# 示例用法
input_text = "这是一个例子,包含一些重复的单词,比如例子和单词。"
k = 3
result = top_k_words(input_text, k)
print(f"前 {k} 个出现次数最多的单词:")
for word, freq in result:
print(f"{word}: {freq}")
```
阅读全文