统计单词频率,输入若干行,每行一个单词,按单词出现频率从高到低输出所有单词,次数相同则按照字典顺序从小到大排序输出
时间: 2024-01-02 09:03:50 浏览: 114
好的,我可以为您编写一个Python程序来实现统计单词频率的功能。以下是程序代码:
```python
import collections
words = []
while True:
try:
line = input()
words.extend(line.split())
except:
break
word_count = collections.Counter(words)
sorted_word_count = sorted(word_count.items(), key=lambda x: (-x[1], x[0]))
for word, count in sorted_word_count:
print(word)
```
您可以将输入的单词逐行输入,程序会自动将其存储到一个列表中。然后使用`collections.Counter`函数对单词进行计数,再按照单词出现频率从高到低排序输出。如果有多个单词出现频率相同,则按照字典顺序从小到大排序输出。
相关问题
统计单词频率,输入若干行,每行一个单词,按单词出现频率从高到低输出所有单词,次数相同则按照字典顺序从小到大排序输出
好的,我可以给你提供一个 Python 代码实现,你可以在本地运行或者在在线 Python IDE 中运行。
```
from collections import Counter
# 读入多行输入,每行一个单词
words = []
while True:
try:
word = input().strip()
if not word:
break
words.append(word)
except:
break
# 使用 Counter 统计单词出现次数
word_counts = Counter(words)
# 按照单词出现次数和字典顺序排序
sorted_words = sorted(word_counts.items(), key=lambda x: (-x[1], x[0]))
# 输出结果
for word, count in sorted_words:
print(word)
```
你只需要将这段代码复制到 Python 环境中运行,然后逐行输入单词即可。代码会统计单词出现频率,并按照要求排序输出。注意,当输入结束时需要输入一个空行来结束输入。
用 python 实现 输入若干个单词,用逗号隔开,输出前 k 个出现次数最多的单词,输出结果按单词出现频率由高到低排序
在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}")
```
阅读全文