Python 词频排序

Python Word Frequency Sort

我被要求编写一个程序来计算文本文件中的单词。我能够计算单词及其频率并将它们存储在字典中。现在,我必须将该数据写入另一个文本文件,但频率递减。如果两个词具有相同的频率,则该词必须按字母顺序写入输出文本文件。

我将单词及其频率存储到一个元组中,并对文件中的所有单词执行相同的操作。包含包含(频率,单词)的元组的列表。

我使用 .sort(reverse = True) 对元组进行排序,但它也会按相反的字母顺序对具有相同频率的单词进行排序。

例如:如果我的列表是:

L = [(4,"hello"),(2,"zebra"),(2,"apple"),(1,"a"),(1,"the"),(1,"bike")]

输出应该是:

hello          4  
apple          2  
zebra          2  
a              1  
bike           1  
the            1  

这是一个解决问题的3线

L = [(4,"hello"),(2,"zebra"),(2,"apple"),(1,"a"),(1,"the"),(1,"bike")]
L = sorted(L, key=lambda x: (-x[0],x[1]))
for i,j in L:
    print j, i

输出

hello 4
apple 2
zebra 2
a 1
bike 1
the 1

您的想法是,您希望以与第二个组件不同的顺序对元组的第一个组件进行排序。考虑到这一点的一个简单转换是将排序键设置为 (-x[0],x[1]).