Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python中按频率值对列表排序_Python_Sorting_Count - Fatal编程技术网

python中按频率值对列表排序

python中按频率值对列表排序,python,sorting,count,Python,Sorting,Count,我是python和编程新手,要想记住这些东西并不容易。 因为我开始读的书都很无聊,所以我开始玩弄一些想法 以下是我想做的: 打开文本文件,计算每个值的频率(只是一个系统名列表),按频率对列表进行排序,然后返回结果。 在网上搜索了一些代码后,我在这里得到了以下信息: file = open('C:\\Temp\\Test2.txt', 'r') text = file.read() file.close() word_list = text.lower().split(None) word_

我是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]))
它可以工作,但会按列表中的单词/systemnames进行排序:

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())
但是没有。。。。 看到关于这门语言的大量信息,但却无法让如此简单的事情运作起来,我感到非常沮丧

请帮忙:)


非常感谢

您必须在此处使用
word\u freq.items()

lis = sorted(word_freq.items(), key = lambda x:x[1], reverse = True)
for word,freq in lis:
    print ("%-10s %d" % (word, freq))

不要使用
list
作为变量名。

查看集合。计数器

>>> wordlist = ['foo', 'bar', 'foo', 'baz']
>>> import collections
>>> counter = collections.Counter(wordlist)
>>> counter.most_common()
[('foo', 2), ('baz', 1), ('bar', 1)]
使用a帮助计算物品,并帮助打开(和关闭)文件


您不应该使用
list
作为变量名,因为它是内置的
list()
函数的名称。这样做是必要的。好的,谢谢你的建议:)@BurhanKhalid:谢谢你的编辑。没问题-你的答案和我的答案一样,所以我只是添加了文档链接。哇,非常感谢。现在,我将尝试通过您添加的链接来理解集合:)
import collections

with open('C:\\Temp\\Test2.txt', 'r') as f:
    text = f.read()

word_freq = collections.Counter(text.lower().split())
for word, freq in word_freq.most_common():
    print ("%-10s %d" % (word, freq))