我被要求定义一个函数来返回句子中最常用的3个单词。我已经能够将所需的句子编译成字典,以便像
那样'test test bye bye hello hello world world world'
的格式为
{'world': 3, 'hello': 2, 'bye': 2, 'test': 2}
但是,我只想要前3个用过的单词,可以看出,字典的3个元素之间存在冲突。如果存在冲突,则冲突的单词最好按字母顺序排序,以便只返回3个值。在这种情况下,我想要:
['world','bye','hello']
在排序后返回。我怎么能这样做?
答案 0 :(得分:4)
您可以使用key
的{{1}}函数以及元组本身排序的方式来执行此操作:
sorted
答案 1 :(得分:1)
作为这种问题的更加pythonic方式,您可以使用Counter
模块中的collections
函数来获取正确的字典,然后使用sorted
并简单地切片提取所需的对:< / p>
>>> s='test test bye bye hello hello world world world'
>>> from collections import Counter
>>> sorted(Counter(s.split()).items(),key=lambda (i,j):(-j,i))[:3]
[('world', 3), ('bye', 2), ('hello', 2)]