本文实例讲述了Python找出序列中出现次数最多的元素。分享给大家供大家参考,具体如下:
问题:找出一个元素序列中出现次数最多的元素是什么
解决方案:collections模块中的Counter类正是为此类问题所设计的。它的一个非常方便的most_common()
方法直接告诉你答案。
# Determine the most common words in a listwords = [ 'look', 'into', 'my', 'eyes', 'look', 'into', 'my', 'eyes', 'the', 'eyes', 'the', 'eyes', 'the', 'eyes', 'not', 'around', 'the', 'eyes', "don't", 'look', 'around', 'the', 'eyes', 'look', 'into', 'my', 'eyes', "you're", 'under']from collections import Counterword_counts = Counter(words)top_three = word_counts.most_common(3)print(top_three)# outputs [('eyes', 8), ('the', 5), ('look', 4)]# Example of merging in more wordsmorewords = ['why','are','you','not','looking','in','my','eyes']word_counts.update(morewords) #使用update()增加计数print(word_counts.most_common(3))
>>> ================================ RESTART ================================>>>[('eyes', 8), ('the', 5), ('look', 4)][('eyes', 9), ('the', 5), ('my', 4)]>>>
在底层实现中,Counter是一个字典,在元素和它们出现的次数间做了映射。
>>> word_countsCounter({'eyes': 9, 'the': 5, 'my': 4, 'look': 4, 'into': 3, 'around': 2, 'not': 2, "don't": 1, 'under': 1, 'are': 1, 'looking': 1, "you're": 1, 'you': 1, 'why': 1, 'in': 1})>>> word_counts.most_common(3) #top_three[('eyes', 9), ('the', 5), ('my', 4)]>>> word_counts['not']2>>> word_counts['eyes']9>>> word_counts['eyes']+110>>> word_countsCounter({'eyes': 9, 'the': 5, 'my': 4, 'look': 4, 'into': 3, 'around': 2, 'not': 2, "don't": 1, 'under': 1, 'are': 1, 'looking': 1, "you're": 1, 'you': 1, 'why': 1, 'in': 1})>>> word_counts['eyes']=word_counts['eyes']+1 #手动增加元素计数>>> word_countsCounter({'eyes': 10, 'the': 5, 'my': 4, 'look': 4, 'into': 3, 'around': 2, 'not': 2, "don't": 1, 'under': 1, 'are': 1, 'looking': 1, "you're": 1, 'you': 1, 'why': 1, 'in': 1})>>>
增加元素出现次数可以通过手动进行增加,也可以借助update()
方法;
另外,Counter对象另一个特性是它们可以同各种数学运算操作结合起来使用:
>>> a=Counter(words)>>> aCounter({'eyes': 8, 'the': 5, 'look': 4, 'my': 3, 'into': 3, 'around': 2, 'under': 1, "you're": 1, 'not': 1, "don't": 1})>>> b=Counter(morewords)>>> bCounter({'not': 1, 'my': 1, 'in': 1, 'you': 1, 'looking': 1, 'are': 1, 'eyes': 1, 'why': 1})>>> c=a+b>>> cCounter({'eyes': 9, 'the': 5, 'my': 4, 'look': 4, 'into': 3, 'around': 2, 'not': 2, "don't": 1, 'under': 1, 'are': 1, 'looking': 1, "you're": 1, 'you': 1, 'in': 1, 'why': 1})>>> # substract counts>>> d=a-b>>> dCounter({'eyes': 7, 'the': 5, 'look': 4, 'into': 3, 'my': 2, 'around': 2, 'under': 1, "you're": 1, "don't": 1})>>>
当面对任何需要对数据制表或计数的问题时,Counter对象都是你手边的得力工具。比起利用字典自己手写算法,更应采用该方式完成任务。
希望本文所述对大家Python程序设计有所帮助。
新闻热点
疑难解答