我有一个带有单词和频率的排序字典:
words = {'dog':8, 'cat':7, 'pig':4 ......}
Run Code Online (Sandbox Code Playgroud)
有没有一种优雅的方式来选择前 3 个项目?所以它最终是:
words = {'dog':8, 'cat':7, 'pig':4}
Run Code Online (Sandbox Code Playgroud)
我可以设置阈值 k = 3 并执行 for 循环,但是有没有更好的方法来做到这一点?
由于词频是整数,您可以most_common在 a 上使用该方法Counter。您甚至可以首先使用Counter方便地获取频率:
>>> from collections import Counter
>>> sentence = 'the black cat sat on the black mat on the floor'
>>> freqs = Counter(sentence.split())
>>> freqs.most_common(3)
[('the', 3), ('black', 2), ('on', 2)]
Run Code Online (Sandbox Code Playgroud)
它返回一个对的列表,所以如果你想要结果作为字典,你可以使用dict构造函数:
>>> dict(freqs.most_common(3))
{'the': 3, 'black': 2, 'on': 2}
Run Code Online (Sandbox Code Playgroud)
小智 5
请试试这个代码。
>>> from itertools import islice
>>> words = {'dog':8, 'cat':7, 'pig':4, 'rabbit': 3}
>>> dict(islice(words.items(), 3))
{'dog': 8, 'cat': 7, 'pig': 4}
Run Code Online (Sandbox Code Playgroud)