编写一个程序,根据单词的出现频率降序打印出所输入的各个单词。每个单词前标有它的计数值
时间: 2024-06-13 15:08:14 浏览: 104
以下是Python程序,可以根据单词的出现频率降序打印出所输入的各个单词,并在每个单词前标出它的计数值:
```python
import re
from collections import Counter
# 读取文件并将所有单词转换为小写
with open('file.txt', 'r') as f:
words = re.findall(r'\w+', f.read().lower())
# 计算每个单词出现的次数
word_counts = Counter(words)
# 按照单词出现的次数进行降序排序
sorted_word_counts = sorted(word_counts.items(), key=lambda x: x[1], reverse=True)
# 打印每个单词及其出现的次数
for word, count in sorted_word_counts:
print(f"{word}: {count}")
```
在上面的代码中,我们首先使用`re.findall()`函数从文件中读取所有单词,并将它们转换为小写。然后,我们使用`collections.Counter()`函数计算每个单词出现的次数,并将结果存储在一个字典中。最后,我们使用`sorted()`函数按照单词出现的次数进行降序排序,并打印每个单词及其出现的次数。
相关问题
用Python实现编写一个程序,根据单词的出现频率降序打印出所输入的的各个单词。每个单词前标有它的计数值。 输入 各个单词,输入0则表示单词结束 输出 降序打印单词出现的频率和单词
可以使用Python内置的collections模块中的Counter类来实现单词出现频率的统计。具体实现如下:
```python
from collections import Counter
words = []
while True:
word = input("请输入单词:")
if word == "0":
break
words.append(word)
word_counts = Counter(words)
sorted_words = sorted(word_counts.items(), key=lambda x: x[1], reverse=True)
for word, count in sorted_words:
print(f"{word}: {count}")
```
这个程序会不断地让用户输入单词,直到输入0为止。然后使用Counter类来统计每个单词出现的次数,并将结果按照出现次数降序排序。最后遍历排序后的结果,逐行输出每个单词及其出现次数。
题目描述 编写一个程序,根据单词的出现频率降序打印出所输入的的各个单词。每个单词前标有它的计数值。 输入 各个单词,输入0则表示单词结束 输出 降序打印单词出现的频率和单词。
这道题目需要使用哈希表来统计每个单词出现的次数,然后再按照出现次数进行排序输出。以下是代码实现:
```
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_WORD_LEN 100 // 单词最大长度
#define HASH_SIZE 10007 // 哈希表大小
typedef struct WordNode {
char word[MAX_WORD_LEN];
int count;
struct WordNode *next;
}Node;
WordNode *hashTable[_SIZE];
// 哈希函数
unsigned int hash(char *str) {
unsigned int hash = 0;
while (*str) {
hash = hash * 131 + *str++;
}
return hash % HASH_SIZE;
}
// 插入单词
void insert(char *word) {
unsigned int h = hash(word);
WordNode *p = hashTable[h];
while (p != NULL) {
if (strcmp(p->word, word) == 0) {
p->count++;
return;
}
p = p->next;
}
p = (WordNode *)malloc(sizeof(WordNode));
strcpy(p->word, word);
p->count = 1;
p->next = hashTable[h];
hashTable[h] = p;
}
// 比较函数
int cmp(const void *a, const void *b) {
WordNode **pa = (WordNode **)a;
WordNode **pb = (WordNode **)b;
return (*pb)->count - (*pa)->count;
}
int main() {
char word[MAX_WORD_LEN];
while (scanf("%s", word) != EOF && strcmp(word, "0") != 0) {
insert(word);
}
int n = 0;
WordNode *nodes[HASH_SIZE];
for (int i = 0; i < HASH_SIZE; i++) {
WordNode *p = hashTable[i];
while (p != NULL) {
nodes[n++] = p;
p = p->next;
}
}
qsort(nodes, n, sizeof(WordNode *), cmp);
for (int i = 0; i < n; i++) {
printf("%d %s\n", nodes[i]->count, nodes[i]->word);
}
return 0;
}
```
阅读全文