【发布时间】:2013-05-20 22:05:46
【问题描述】:
我是 python 和编程的新手,对我来说要记住这些东西并不容易。 因为我开始读的书很无聊,所以我开始尝试一些想法。
这是我想做的: 打开文本文件,计算每个值的频率(只是系统名称列表),按频率对列表进行排序,然后返回结果。 在网上搜索了一些代码后,我在这里得到了这个:
file = open('C:\\Temp\\Test2.txt', 'r')
text = file.read()
file.close()
word_list = text.lower().split(None)
word_freq = {}
for word in word_list:
word_freq[word] = word_freq.get(word, 0) + 1
list = sorted(word_freq.keys())
for word in list:
print ("%-10s %d" % (word, word_freq[word]))
它有效,但它按列表中的单词/系统名称排序:
pc05010 3
pc05012 1
pc05013 8
pc05014 2
我想要这样:
pc05013 8
pc05010 3
pc05014 2
pc05012 1
现在我正在搜索几个小时的按值排序函数。我敢打赌这很容易,但我什么也没找到。
对于我的初学者来说,这与这一行有关:
list = sorted(word_freq.keys())
我想也许是它:
list = sorted(word_freq.values())
但是没有.... 看到关于这种语言的大量信息,但无法让如此简单的事情发挥作用,这让我感到非常沮丧。
请帮忙:)
非常感谢!
【问题讨论】:
-
您不应该使用
list作为变量名,因为它是内置list()函数的名称。这样做称为shadowing builtins。 -
好的,谢谢你的建议 :)