Counter类

作者: Aurora_Twinkle | 来源:发表于2018-03-30 21:04 被阅读0次

Counter类

欢迎关注本人博客:云端筑梦师

Counter类是一个无序容器类型,用来跟踪值出现的次数,以字典的键值对形式存储,其中元素作为key,其计数作为value.计数值可以是任意整数.

1.创建Counter类
请看代码:

>>> c = Counter()  # 创建一个空的Counter类
>>> c = Counter('gallahad')  # 从一个可iterable对象(list、tuple、dict、字符串等)创建
>>> c = Counter({'a': 4, 'b': 2})  # 从一个字典对象创建
>>> c = Counter(a=4, b=2)  # 从一组键值对创建

2.计数值的访问

和字典的访问方法一样

>>> c = Counter("abcdefgab")
>>> c["a"]
2
>>> c["c"]
1
>>> c["h"]
0

3.计数器的更新

可以使用一个iterable对象或者另一个Counter对象来更新键值。

计数器的更新包括增加和减少两种。其中,增加使用update()方法:

>>> c = Counter('which')
>>> c.update('witch')  # 使用另一个iterable对象更新
>>> c['h']
3
>>> d = Counter('watch')
>>> c.update(d)  # 使用另一个Counter对象更新
>>> c['h']
4

使用subtract()方法:

>>> c = Counter('which')
>>> c.subtract('witch')  # 使用另一个iterable对象更新
>>> c['h']
1
>>> d = Counter('watch')
>>> c.subtract(d)  # 使用另一个Counter对象更新
>>> c['a']
-1

4.键的删除

使用del进行删除

>>> c = Counter("abcdcba")
>>> c
Counter({'a': 2, 'c': 2, 'b': 2, 'd': 1})
>>> c["b"] = 0
>>> c
Counter({'a': 2, 'c': 2, 'd': 1, 'b': 0})
>>> del c["a"]
>>> c
Counter({'c': 2, 'b': 2, 'd': 1})

5.elements()

返回一个迭代器。元素被重复了多少次,在该迭代器中就包含多少个该元素。元素排列无确定顺序,个数小于1的元素不被包含。

>>> c = Counter(a=4, b=2, c=0, d=-2)
>>> list(c.elements())
['a', 'a', 'a', 'a', 'b', 'b']

6.most_common([n])

返回一个TopN列表。如果n没有被指定,则返回所有元素。当多个元素计数值相同时,排列是无确定顺序的。

>>> c = Counter('abracadabra')
>>> c.most_common()
[('a', 5), ('r', 2), ('b', 2), ('c', 1), ('d', 1)]
>>> c.most_common(3)
[('a', 5), ('r', 2), ('b', 2)]

7.浅拷贝copy

>>> c = Counter("abcdcba")
>>> c
Counter({'a': 2, 'c': 2, 'b': 2, 'd': 1})
>>> d = c.copy()
>>> d
Counter({'a': 2, 'c': 2, 'b': 2, 'd': 1})

8.算术和集合操作

+、-、&、|操作也可以用于Counter。其中&和|操作分别返回两个Counter对象各元素的最小值和最大值。需要注意的是,得到的Counter对象将删除小于1的元素。

>>> c = Counter(a=3, b=1)
>>> d = Counter(a=1, b=2)
>>> c + d  # c[x] + d[x]
Counter({'a': 4, 'b': 3})
>>> c - d  # subtract(只保留正数计数的元素)
Counter({'a': 2})
>>> c & d  # 交集:  min(c[x], d[x])
Counter({'a': 1, 'b': 1})
>>> c | d  # 并集:  max(c[x], d[x])
Counter({'a': 3, 'b': 2})

9.常用操作

sum(c.values())  # 所有计数的总数
c.clear()  # 重置Counter对象,注意不是删除
list(c)  # 将c中的键转为列表
set(c)  # 将c中的键转为set
dict(c)  # 将c中的键值对转为字典
c.items()  # 转为(elem, cnt)格式的列表
Counter(dict(list_of_pairs))  # 从(elem, cnt)格式的列表转换为Counter类对象
c.most_common()[:-n:-1]  # 取出计数最少的n-1个元素
c += Counter()  # 移除0和负值

相关文章

  • Counter类

    Counter类 欢迎关注本人博客:云端筑梦师 Counter类是一个无序容器类型,用来跟踪值出现的次数,以字典的...

  • 2018-04-23 Counter类(计数器)

    Counter(计数器):用于追踪值的出现次数 Counter类继承dict类,所以它能使用dict类里面的方法 ...

  • Java - 原子变量和CAS

    Java - 原子变量和CAS 首先引入一个Counter类 在这个Counter类中,我们使用了synchron...

  • 用CSS样式使DIV变成列表样式的几种方法

    一、使用伪类选择器和counter属性 div>div{ counter-increment: count; } ...

  • 方法(Methods)

    方法概念: 函数在类,结构体,枚举中就叫方法。 实例方法举例: let counter = Counter()//...

  • 线程混淆

    考虑一个简单的名叫Counter的类。 Counter类被设计成如下:每次调用increment方法,都会使c加一...

  • python计数器(Counter)

    Counter是collections模块的Counter类。collections中一共有9种容器,其中coun...

  • 13.Collections模块

    一、实验目的 Counter 类 defaultdict 类 namedtuple 类 二、知识要点 首先我们通过...

  • 带你走进python 计数器类Counter的用法

    什么是Counter? Counter 是一个在collections包里的类,正如其名,是一个用于计数的工具。 ...

  • 常用方法

    Counter统计高频内容 1.引入counter类2.将一个集合传入3.使用most_common打印出现最多的...

网友评论

    本文标题:Counter类

    本文链接:https://www.haomeiwen.com/subject/oacwcftx.html