python中collections中的counter类_python collections中Counter类

Counter是dict的一个子类,因此具有dict的属性与方法。如常用的iteritems, items, get, pop。

class Counter(dict):

如果Key不存在,将返回0,不会引发KeyError异常。

def __mising__(self, key):

return 0

elements()

返回一个生成器,需要用到 itertools 标准库中的chain,starmap,repeat等方法,itertools是关于迭代器的工具。

def elements(self):

return _chain.from_iterable(_starmap(_repeat, self.iteritems()))

most_common()

列出前n个出现次数最多的元素。如果n是默认值(None),将列出所有元素。sorted 是内建函数,返回有序列表。heapq 是关于数据结构堆的操作。

def most_common(self, n=None):

if n is None:

return sorted(self.iteritems(), key=_itemgetter(1), reverse=True)

return _heapq.nlargest(n, self.iteritems(), key=_itemgetter(1))

update()

根据参数,增加key的计数。无论输入还是输出,value都允许是负值。

单从args参数来看,如果args[1]是一个Counter()对象,则在此对象的基础上进行统计。否则,从0计数。

self_get(elem, 0),如果key不存在的话,则记为0。

def update(*args, **kwds):

if not args:

raise TypeError("descriptor 'update' of 'Counter' object "

"needs an argument")

self = args[0]

args = args[1:]

if len(args) > 1:

raise TypeError('expected at most 1 arguments, got %d' % len(args))

iterable = args[0] if args else None

if iterable is not None:

if isinstance(iterable, Mapping):

if self:

self_get = self.get

for elem, count in iterable.iteritems():

self[elem] = self_get(elem, 0) + count

else:

super(Counter, self).update(iterable) # fast path when counter is empty

else:

self_get = self.get

for elem in iterable:

self[elem] = self_get(elem, 0) + 1

if kwds:

self.update(kwds)

substract()

与update()相反,减少key的计数。

def subtract(*args, **kwds):

if not args:

raise TypeError("descriptor 'subtract' of 'Counter' object "

"needs an argument")

self = args[0]

args = args[1:]

if len(args) > 1:

raise TypeError('expected at most 1 arguments, got %d' % len(args))

iterable = args[0] if args else None

if iterable is not None:

self_get = self.get

if isinstance(iterable, Mapping):

for elem, count in iterable.items():

self[elem] = self_get(elem, 0) - count

else:

for elem in iterable:

self[elem] = self_get(elem, 0) - 1

if kwds:

self.subtract(kwds)

copy

返回对象的一个浅拷贝。self.class 指 。

def copy(self):

'Return a shallow copy.'

return self.__class__(self)

python库-collections模块Counter类

Counter类主要是用来跟踪值出现的次数.它是一个无序的容器类型,以字典的键值对形式存储,其中元素作为key,其计数作为value. demo: all_words = [] # 列表里面是汉字(可 ...

《python解释器源码剖析》第13章--python虚拟机中的类机制

13.0 序 这一章我们就来看看python中类是怎么实现的,我们知道C不是一个面向对象语言,而python却是一个面向对象的语言,那么在python的底层,是如何使用C来支持python实现面向对象 ...

Python面向对象中的类和对象

类和对象 目标 类和对象的概念 类和对象的关系 类的设计 01. 类和对象的概念 类 和 对象 是 面向对象编程的 两个 核心概念 1.1 类 类 是对一群具有 相同 特征 或者 行为 的事物的一个统 ...

Python标准库——collections模块的Counter类

1.collections模块 collections模块自Python 2.4版本开始被引入,包含了dict.set.list.tuple以外的一些特殊的容器类型,分别是: OrderedDict类 ...

Python元类实践--自己定义一个和collections中一样的namedtuple

大家可能很熟悉在collections模块中有一个很好用的扩展数据类型-namedtuple. 如果你还不知道这个类型,那么请翻看标准手册. 我利用元类轻松定义一个namedtuple. 先把代码贴上 ...

python之Counter类:计算序列中出现次数最多的元素

Counter类:计算序列中出现次数最多的元素 from collections import Counter c = Counter('abcdefaddffccef') print('完整的Cou ...

[PY3]——找出一个序列中出现次数最多的元素/collections.Counter 类的用法

问题 怎样找出一个序列中出现次数最多的元素呢? 解决方案 collections.Counter 类就是专门为这类问题而设计的, 它甚至有一个有用的 most_common() 方法直接给了你答案 c ...

python3 开发面试题(collections中的Counter)6.7

''' 编写Python脚本,分析xx.log文件,按域名统计访问次数 xx.log文件内容如下: https://www.sogo.com/ale.html https://www.qq.com/3 ...

随机推荐

go排序

补注: 近来又看 go 的排序, 发现以前对 go 的排序理解的有点浅了. go 的排序思路和 c 和 c++ 有些差别. c 默认是对数组进行排序, c++ 是对一个序列进行排序, go 则更宽泛一 ...

《驾驭Core Data》 第一章 Core Data概述

系列教程综合了,,

docke 网络配置

一,docker 的bridge模式是和vmware中的nat模式类似的,但是如果想要弄成和vmwae中的bridge怎么办呢? 说明,bridge模式获取的Ip是与宿主机的ip是出于同一个网段的. ...

Esper

https://www.igvita.com/2011/05/27/streamsql-event-processing-with-esper/ http://torycatkin.iteye.com ...

ViewPager,使用Fragment实现

效果如图: 使用Fragment实现tab的缺点就是不能够滑动.不过应该也算优点,具体场景可以自由选择. 完整代码:imooc-tab022fragment,在我的百度云网盘上. MainAcgtiv ...

【高德地图API】如何打造十月妈咪品牌地图?

原文:[高德地图API]如何打造十月妈咪品牌地图? 摘要:品牌地图除了地图,商铺标点外,还有微博关注,路线查询等功能. ---------------------------------------- ...

BZOJ_1697_[Usaco2007 Feb]Cow Sorting牛排序_贪心

BZOJ_1697_[Usaco2007 Feb]Cow Sorting牛排序_贪心 Description 农夫JOHN准备把他的 N(1 <= N <= 10,000)头牛排队以便于行 ...

Android Keystore 对称-非对称加密

Android数据加密: Anroid数据加密方式 Android 提供了 KeyStore 等可以长期存储和检索加密密钥的机制,Android KeyStore 系统特别适合于存储加密密钥. “An ...

FUTABA 13-ST-84GINK &plus; DS3231 时钟

收拾东西的时候又看到之前收拾的vfd相关的盒子,偶然又加的群,又买了两种屏试水. 大的买屏还送vfd变压器,这玩意卖的少,一个5块,不买血亏!不知道什么时候开始早已没有DIY是省钱这种观念了.草... ...

jsp中的四个作用域,九个内置对象分别是什么&quest;

九大内置对象: 内置对象(又叫隐含对象),就是在jsp中,不需要创建(由服务器来创建),可以直接使用的对象. 对象 含义 类 作用域 request 请求对象 类型 javax.s ...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值