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