Python cookbook(数据结构与算法)找出序列中出现次数最多的元素算法示例
本文实例讲述了Python找出序列中出现次数最多的元素。分享给大家供大家参考,具体如下:
问题:找出一个元素序列中出现次数最多的元素是什么
解决方案:collections模块中的Counter类正是为此类问题所设计的。它的一个非常方便的most_common()方法直接告诉你答案。
#Determinethemostcommonwordsinalist words=[ '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' ] fromcollectionsimportCounter word_counts=Counter(words) top_three=word_counts.most_common(3) print(top_three) #outputs[('eyes',8),('the',5),('look',4)] #Exampleofmerginginmorewords morewords=['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_counts Counter({'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']+1 10 >>>word_counts Counter({'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_counts Counter({'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) >>>a Counter({'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) >>>b Counter({'not':1,'my':1,'in':1,'you':1,'looking':1,'are':1,'eyes':1,'why':1}) >>>c=a+b >>>c Counter({'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}) >>>#substractcounts >>>d=a-b >>>d Counter({'eyes':7,'the':5,'look':4,'into':3,'my':2,'around':2,'under':1,"you're":1,"don't":1}) >>>
当面对任何需要对数据制表或计数的问题时,Counter对象都是你手边的得力工具。比起利用字典自己手写算法,更应采用该方式完成任务。
(代码摘自《PythonCookbook》)
更多关于Python相关内容感兴趣的读者可查看本站专题:《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》
希望本文所述对大家Python程序设计有所帮助。