python counter模块_Python计数模块Counter

本文主要介绍Python内置的Counter模块,尤其在计算对象的个数非常方便

先来看看源码对这个模块的说明

class Counter(dict):

'''Dict subclass for counting hashable items. Sometimes called a bag

or multiset. Elements are stored as dictionary keys and their counts

are stored as dictionary values.

...

'''

字典的子类,用于计算hashtable,有时被称为袋子或者多类型的字典。元素作为字典的键,元素个数作为字典的值。

>>> c = Counter('abcdeabcdabcaba') # count elements from a string

>>> c.most_common(3) # three most common elements

[('a', 5), ('b', 4), ('c', 3)]

>>> sorted(c) # list all unique elements

['a', 'b', 'c', 'd', 'e']

>>> ''.join(sorted(c.elements())) # list elements with repetitions

'aaaaabbbbcccdde'

>>> sum(c.values()) # total of all counts

15

>>> c['a'] # count of letter 'a'

5

>>> for elem in 'shazam': # update counts from an iterable

... c[elem] += 1 # by adding 1 to each element's count

>>> c['a'] # now there are seven 'a'

7

>>> del c['b'] # remove all 'b'

>>> c['b'] # now there are zero 'b'

0

>>> d = Counter('simsalabim') # make another counter

>>> c.update(d) # add in the second counter

>>> c['a'] # now there are nine 'a'

9

>>> c.clear() # empty the counter

>>> c

Counter()

Note: If a count is set to zero or reduced to zero, it will remain

in the counter until the entry is deleted or the counter is cleared:

>>> c = Counter('aaabbc')

>>> c['b'] -= 2 # reduce the count of 'b' by two

>>> c.most_common() # 'b' is still in, but its count is zero

[('a', 3), ('c', 1), ('b', 0)]

常用的方法介绍

拥有字典的访问方法

由于c是字典的子类,因此继承了字典的访问删除等方法

>>> c = Counter('abcdeabcdabcaba')

>>> c.items()

dict_items([('b', 4), ('c', 3), ('a', 5), ('d', 2), ('e', 1)])

>>> c['a']

5

>>> c.get("a")

5

>>> c.keys()

dict_keys(['b', 'c', 'a', 'd', 'e'])

>>> c.values()

dict_values([4, 3, 5, 2, 1])

>>> c.pop("a")

5

>>> c.clear()

Counter 类独有方法

>>> c.most_common(3) # 最多的前三位

[('b', 4), ('c', 3), ('d', 2)]

>>> c

Counter({'a': 5, 'b': 4, 'c': 3, 'd': 2, 'e': 1})

>>> c.update("abc") # 更新计数器对象c

>>> c

Counter({'a': 6, 'b': 5, 'c': 4, 'd': 2, 'e': 1})

>>> d = Counter("abc")

>>> c.update(d) # 可以更新counter 对象

>>> c

Counter({'a': 7, 'b': 6, 'c': 5, 'd': 2, 'e': 1})

>>> c.clear()

>>> c

Counter()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值