【问题标题】:less common words in a python list [closed]python列表中不太常见的单词[关闭]
【发布时间】:2018-03-01 20:39:26
【问题描述】:

我已经完成了最常用词的计数,以便仅按顺序保留列表中最常用的 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


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    您可以尝试以下方法:

    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']
    

    【讨论】:

      猜你喜欢
      • 2018-06-07
      • 2019-02-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-08
      相关资源
      最近更新 更多