python列表中不常见的单词[关闭]

问题描述 投票:1回答:2

我已经完成了大多数常用单词的计数器,只按顺序保留列表中最常用的128个单词:

words = my_list
mcommon_words = [word for word, word_count in Counter(words).most_common(128)]
my_list = [x for x in my_list if x in mcommon_words]
my_list = OrderedDict.fromkeys(my_list)
my_list = list(my_list.keys())

但是现在我想以同样的方式计算128个不常见的单词。更快的解决方案也会对我有所帮助

python list counter
2个回答
2
投票

most_common将单词及其计数作为元组列表返回。此外,if no argument is given, it returns all the words

该方法返回列表的事实意味着您可以使用切片来获取第一个和最后一个n元素。

演示:

l = list("asadfabsdfasodfjoasdffsafdsa")
sorted_items = [w for w, _ in Counter(l).most_common()]

print(sorted_items[:2])  ## Print top 2 items
print(sorted_items[-2:]) ## Print last 2 items

1
投票

您可以尝试以下方法:

from collections import Counter

def common_words(words, number_of_words, reverse=False):
    counter = Counter(words)
    return sorted(counter, key = counter.get, reverse=reverse)[:number_of_words]

在这里,我们确保Counter字典按其值排序。排序后,我们返回最少的单词。这是一个测试示例:

words = []
for i,num in enumerate('one two three four five six seven eight nine ten'.split()):
    words.extend([num]*(i+1))

print(common_words(words,5))

这个例子从你的单词列表中得到了5个最常用的单词。

结果:

['one', 'two', 'three', 'four', 'five']

我们也可以得到最常用的词:

print(common_words(words,5, reverse=True))

结果:

['ten', 'nine', 'eight', 'seven', 'six']
© www.soinside.com 2019 - 2024. All rights reserved.