句子中三个词的频率

时间:2015-04-07 09:21:20

标签: python sorting dictionary

我被要求定义一个函数来返回句子中最常用的3个单词。我已经能够将所需的句子编译成字典,以便像

那样
'test test bye bye hello hello world world world'

的格式为

{'world': 3, 'hello': 2, 'bye': 2, 'test': 2}

但是,我只想要前3个用过的单词,可以看出,字典的3个元素之间存在冲突。如果存在冲突,则冲突的单词最好按字母顺序排序,以便只返回3个值。在这种情况下,我想要:

['world','bye','hello']

在排序后返回。我怎么能这样做?

2 个答案:

答案 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)]