python将得到的词频字典分行打印后,怎么将结果从大到小排列
时间: 2024-03-07 17:47:26 浏览: 15
你可以使用 Python 的内置函数sorted()和items(),以及参数key来实现按值排序。以下是一个示例代码:
```
word_freq = {'apple': 5, 'banana': 2, 'orange': 3, 'pear': 1}
sorted_freq = sorted(word_freq.items(), key=lambda x: x[1], reverse=True)
for word, freq in sorted_freq:
print(word, freq)
```
输出结果为:
```
apple 5
orange 3
banana 2
pear 1
```
代码中,sorted()函数接收一个字典的items()方法返回的元组列表作为输入,参数key是一个lambda函数,用于指定按值排序。reverse=True表示降序排列。最后遍历排序后的元组列表,输出排好序的词频结果。
相关问题
Python文件 文本词频统计代码
以下是Python实现文本词频统计的代码:
```python
import re
# 定义函数,传入文件名和要统计的单词个数
def word_count(file_name, num):
# 打开文件
with open(file_name, 'r') as f:
# 读取文件内容
content = f.read()
# 将单词转换为小写,并去掉标点符号
words = re.findall(r'\b[a-z]+\b', content.lower())
# 统计单词出现的次数
word_dict = {}
for word in words:
if word not in word_dict:
word_dict[word] = 1
else:
word_dict[word] += 1
# 排序并输出结果
sorted_word_dict = sorted(word_dict.items(), key=lambda x: x[1], reverse=True)
for i in range(num):
print(sorted_word_dict[i][0], sorted_word_dict[i][1])
# 调用函数进行测试
word_count('test.txt', 10)
```
代码解释:
1. `re.findall(r'\b[a-z]+\b', content.lower())` 用正则表达式匹配文件内容中的单词,`\b` 表示单词的边界,`[a-z]+` 表示一个或多个小写字母。
2. `word_dict` 用字典来保存单词出现的次数,如果单词不存在则添加到字典中,否则将出现次数加一。
3. `sorted_word_dict` 将字典按照值进行排序,`key=lambda x: x[1]` 表示按照值进行排序,`reverse=True` 表示降序排列。
4. `for i in range(num)` 只输出前面 num 个单词和出现次数。
python 词云图中最大的词不是词频最高的怎么回事
在生成词云图时,词频高的词语会被显示出来,但不一定是最大的。这是因为词云图不仅仅是按照词频来排列词语的大小,还考虑了其他因素,比如词语的重要性、排名等等。
WordCloud库中默认的词云图生成算法是基于随机布局的,它会根据不同的参数和权重来随机排列词语的位置和大小,使得图形看起来更加美观和平衡。因此,即使某些词频很高的词语没有被显示为最大的,但它们仍然会在词云图中得到充分的展示。
如果你想让某些词语在词云图中显示得更大,可以考虑使用WordCloud库中的max_font_size参数,它可以控制词语的最大字号大小。你还可以通过设置自定义的词语权重来调整词语在词云图中的大小和位置,比如使用WordCloud库中的generate_from_frequencies()方法,传入一个字典类型的词语频率表,来指定每个词语的权重。