python - 按降序发布字典内容的频率(Python)
问题描述
我创建了一个字典,计算每个单词在单独的文本文件中出现的次数。到目前为止,它看起来像这样。
import sys
def main():
d = dict({})
with open(sys.argv[1], encoding="utf-8") as f:
for line in f:
line = line.strip()
line = line.lower()
words = line.split(" ")
for word in words:
if word in d:
d[word] = d[word] + 1
else:
d[word] = 1
for key in list(d.keys()):
print(key, ":", d[key])
if __name__ == "__main__":
main()
在命令行中,我为它输入一个文本文件来计算每个单词的频率(执行“python3 frequencycount.py example.txt”)。此代码有效地执行文本文件中所有单词的列表,并计算它们出现的次数。我现在要做的是按出现频率降序打印单词。
例如,我的文本文件是蔬菜列表(胡椒 5 次,胡萝卜 9 次,豌豆 8 次,西兰花 1 次)。该列表如下所示:
Pepper : 5
Carrot : 9
Peas : 8
Broccoli : 1
但是,我希望它像这样打印:
Carrot : 9
Peas : 8
Pepper : 5
Broccoli : 1
我怎样才能让它像这样按降序打印?谢谢。
解决方案
您可以遍历排序的键列表,其中排序键是 dict 本身的值,并reverse=True
使其降序排列。
d = {
'Pepper' : 5,
'Carrot' : 9,
'Peas' : 8,
'Broccoli' : 1,
}
for key in sorted(d, key=d.get, reverse=True):
print(key, ":", d[key])
输出
Carrot: 9
Peas : 8
Pepper : 5
Broccoli : 1
推荐阅读
- c# - Firebase 数据 - 错误转换值
- jquery - 使用 Rails 5 从多个表数据中按时间顺序馈送
- javascript - Jquery stop image blink before fade out
- c++ - Interaction Between Interface Implementation and Private Inheritance
- javascript - 为什么没有滚动条我无法获得容器宽度?
- android-intent - 意图不会延续到下一个活动,缺少一些小东西
- vba - 从 VBA 插入数据透视表
- python - 如何计算 scikit-learn MLPClassifier 中的分数。获取 numpy.float64 是不可迭代的
- javascript - 如何将占位符把手与#compare 进行比较
- c# - 为 2D 网格创建文件结构