我是一个新手,对于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。 - Burhan Khalid