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]).
我被要求编写一个程序来计算文本文件中的单词。我能够计算单词及其频率并将它们存储在字典中。现在,我必须将该数据写入另一个文本文件,但频率递减。如果两个词具有相同的频率,则该词必须按字母顺序写入输出文本文件。
我将单词及其频率存储到一个元组中,并对文件中的所有单词执行相同的操作。包含包含(频率,单词)的元组的列表。
我使用 .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]).