Fab*_*ter 7 python sorting count
我是 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]))
Run Code Online (Sandbox Code Playgroud)
它有效,但它按列表中的单词/系统名称排序:
pc05010 3
pc05012 1
pc05013 8
pc05014 2
Run Code Online (Sandbox Code Playgroud)
我想要这样:
pc05013 8
pc05010 3
pc05014 2
pc05012 1
Run Code Online (Sandbox Code Playgroud)
现在我正在搜索按值排序功能数小时。我打赌它很容易,但我什么也没找到。
对于我初学者的观点,它与这条线有关:
list = sorted(word_freq.keys())
Run Code Online (Sandbox Code Playgroud)
我想也许是:
list = sorted(word_freq.values())
Run Code Online (Sandbox Code Playgroud)
但不.... 看到关于这种语言的大量信息让我感到非常沮丧,但无法让如此简单的事情发挥作用。
请帮忙 :)
多谢!
你必须word_freq.items()在这里使用:
lis = sorted(word_freq.items(), key = lambda x:x[1], reverse = True)
for word,freq in lis:
print ("%-10s %d" % (word, freq))
Run Code Online (Sandbox Code Playgroud)
不要用作list变量名。