本文实例讲述了Python找出序列中出现次数最多的元素。分享给大家供大家参考,具体如下:
解决方案:collections模块中的Counter类正是为此类问题所设计的。它的一个非常方便的most_common()
方法直接告诉你答案。
# 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}) >>>
增加元素出现次数可以通过手动进行增加,也可以借助update()
方法;
另外,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程序设计有所帮助。
您可能感兴趣的文章:
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。