Python cookbook(数据结构与算法)找出序列中出现次数最多的元素
本篇章节讲解Python找出序列中出现次数最多的元素。分享给大家供大家参考,具体如下: 问题:找出一个元素序列中出现次数最多的元素是什么 解决方案:collections模块中的Counter类正是为此类问题所设计的。它的一个非常方便的 # Determine the most common words in a list words = [ 'look','into','my','eyes','look','the','not','around',"don't","you're",'under' ] from collections import Counter word_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 words morewords = ['why','are','you','looking','in','eyes'] word_counts.update(morewords) #使用update()增加计数 print(word_counts.most_common(3)) >>> ================================ RESTART ================================ >>> [('eyes',4)] [('eyes',9),('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',4)] >>> word_counts['not'] 2 >>> word_counts['eyes'] 9 >>> word_counts['eyes']+1 10 >>> word_counts Counter({'eyes': 9,'in': 1}) >>> word_counts['eyes']=word_counts['eyes']+1 #手动增加元素计数 >>> word_counts Counter({'eyes': 10,'in': 1}) >>> 增加元素出现次数可以通过手动进行增加,也可以借助 另外,Counter对象另一个特性是它们可以同各种数学运算操作结合起来使用: >>> a=Counter(words) >>> a Counter({'eyes': 8,'my': 3,'not': 1,"don't": 1}) >>> b=Counter(morewords) >>> b Counter({'not': 1,'my': 1,'in': 1,'eyes': 1,'why': 1}) >>> c=a+b >>> c Counter({'eyes': 9,'why': 1}) >>> # substract counts >>> d=a-b >>> d Counter({'eyes': 7,'my': 2,"don't": 1}) >>> 当面对任何需要对数据制表或计数的问题时,Counter对象都是你手边的得力工具。比起利用字典自己手写算法,更应采用该方式完成任务。 (代码摘自《Python Cookbook》) 更多关于Python相关内容感兴趣的读者可查看本站专题:《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》 希望本文所述对大家Python程序设计有所帮助。 您可能感兴趣的文章:
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |