博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python每日一练0009
阅读量:7275 次
发布时间:2019-06-29

本文共 1395 字,大约阅读时间需要 4 分钟。

问题

怎样找出一个序列中出现次数最多的元素?

解决方案

使用collections库中的Counter对象可以方便的求出现次数最多的前N个元素

直接使用most_common成员函数就好了,例如:

from collections import Counterwords = [    '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']counter = Counter(words)print(counter.most_common(1))复制代码

输出

[('eyes', 8)]复制代码

讨论

Counter对象是dict的子类,事实上内部存储也是按照k-v字典存储的,这里的v就是次数,所以Counter对象支持dict对象的所有操作

每一个Counter对象初始化可以接受可迭代对象(iterable)、字典、关键字参数

>>> c = Counter()                        # a new, empty counter>>> c = Counter('gallahad')              # a new counter from an iterable>>> c = Counter({
'red': 4, 'blue': 2}) # a new counter from a mapping>>> c = Counter(cats=4, dogs=8) # a new counter from keyword args复制代码

此外,Counter对象还支持数学操作

>>> c = Counter(a=3, b=1)>>> d = Counter(a=1, b=2)>>> c + d                       # add two counters together:  c[x] + d[x]Counter({
'a': 4, 'b': 3})>>> c - d # subtract (keeping only positive counts)Counter({
'a': 2})>>> c & d # intersection: min(c[x], d[x]) Counter({
'a': 1, 'b': 1})>>> c | d # union: max(c[x], d[x])Counter({
'a': 3, 'b': 2})复制代码

所以在遇到跟计数有关的问题时,不妨首先考虑一下Counter对象

来源

Python Cookbook

关注

欢迎关注我的微信公众号:python每日一练

转载地址:http://onscm.baihongyu.com/

你可能感兴趣的文章
Ambari 介绍
查看>>
Guess Number
查看>>
在Eclipse中配置Tomcat 创建和运行Servlet/JSP
查看>>
Javascript:DOM动态创建元素实例应用
查看>>
jQuery操作cookie
查看>>
11-03笔记图
查看>>
时间戳解读
查看>>
width为auto或者100%的区别
查看>>
《贝多芬传》译者序
查看>>
node.js的koa@2性能测试
查看>>
matlab函数_连通区域
查看>>
伪元素选择器
查看>>
Java过滤敏感词
查看>>
java多线程导入excel(poi)
查看>>
UML类间关系
查看>>
Python自学笔记-sorted()函数(来自廖雪峰的官网Python3)
查看>>
如何从零安装Mysql
查看>>
设计模式:命令模式
查看>>
react文档demo实现输入展示搜索结果列表
查看>>
货代英语--------澳大利亚包装声明
查看>>