Python词频排序
我被要求写一个程序来计算文本文件中的单词。我能够数一数单词及其频率,并将它们存储在字典中。现在,我必须将数据写入另一个文本文件中,但频率顺序是递减的。如果两个单词的频率相同,则必须按字母顺序将该单词写入输出文本文件 我将单词及其频率存储到一个元组中,并对文件中的所有单词执行相同的操作。包含元组的列表,元组包含(频率、单词) 我使用Python词频排序,python,sorting,frequency,word,Python,Sorting,Frequency,Word,我被要求写一个程序来计算文本文件中的单词。我能够数一数单词及其频率,并将它们存储在字典中。现在,我必须将数据写入另一个文本文件中,但频率顺序是递减的。如果两个单词的频率相同,则必须按字母顺序将该单词写入输出文本文件 我将单词及其频率存储到一个元组中,并对文件中的所有单词执行相同的操作。包含元组的列表,元组包含(频率、单词) 我使用.sort(reverse=True)对元组进行排序,但它也按字母顺序的相反顺序对相同频率的单词进行排序 例:如果我的清单是: L = [(4,"hello"),(2,
.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])。这里有一个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])