collections 模块--Counter

目的是用来跟踪值出现的次数。是一个无序的容器类型,以字典的键值对形式存储,其中元素为 key,其计数作为 value。计数值可以是任意的 Integer(整数)(包括0和负数)。Counter 类和其他语言的 bags 或 multisets(多重集) 很相似

创建: 有四种方法

Counter 类的创建


c = Counter('xxo')#从一个可 iterable 对象(list,tuple,dict,字符串等)创建

c = Counter({'a':1,'b':2})#从一个字典对象创建

计数值的访问和缺失的键

当所访问的键不存在时,返回0,而不是 KeyError;否则返回它的计数。

计数值的访问

c = Counter('abcdeafg')

c['a']

2

c['c']
1

c['h']
0

计数器的更新(update和subtract)

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

计数器的更新包括增加和减少两种。

增加使用update()方法

计数器的更新(update)

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

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

减少则使用 subtract() 方法:

计数器的更新(subtract) ``` c = Counter('which') c.subtract ('witch')#使用另一个iterable 对象更新 c['h'] 1

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

from collections import Counter

c = Counter()

c = Counter('hello ff')

# c = Counter({'a':1,'b':2})

# c = Counter(a = 1,b =2)

print(c)

Counter({'l': 2, 'f': 2, 'h': 1, 'e': 1, 'o': 1, ' ': 1})

c = Counter('helloff')

c.update('hellopp')

print(c['f'])

print(c['h'])

print(c['l'])

update 就是把这个对象增添进去

c = Counter('helloff')

c.subtract('helloopp')

print(c['h'])

print(c['f'])

print(c['o'])

0

2

-1

c = Counter('abcefgpwf666')

# print(c)

# print(c['6'])

# print(c[6]) #找数字6,里面只有 str 类型的6,所有结果为0

c['6']=2 #直接把 str6修改为个数为1, 不是删除1个

print(c['6'])

del c['f']

print(c)

print(c)

elements()

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

c = Counter(a =1,b=2,c=3,d=0)

print(list(c.elements()))

['a', 'b', 'b', 'c', 'c', 'c']

most_common([n])

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

c = Counter('sdkfjlkdsjgkjdjsdkjf')

print(c.most_common())

# [('j', 5), ('d', 4), ('k', 4), ('s', 3), ('f', 2), ('l', 1), ('g', 1)]

print(c.most_common(2))

[('j', 5), ('d', 4)]

copy

c = Counter(a=1,b=2)

print(c)

d = c.copy()

print(d)

集合和算数操作

+,-,&,| 操作也可以用于 Counter. 其中&和|操作分别返回两个 Counter 对象个元素的最小值和最大值.

需要注意的是,得到的 Counter 对象将删除小于1的元素.

c = Counter(a=3,b=1)

d = Counter(a=1,b=2)

print(c+d) #Counter({'a': 4, 'b': 3})

print(c-d) #Counter({'a': 2}) # subtract (减去)只保留正数计数的元素

collections --Counter的更多相关文章

  1. slice.indices()/collections.Counter笔记

    关于slice.indices() >>> help(slice) Help on class slice in module builtins: class slice(objec ...

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

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

  3. collections.Counter类统计列表元素出现次数

    # 使用collections.Counter类统计列表元素出现次数 from collections import Counter names = ["Stanley", &qu ...

  4. 一道算法题,引出collections.Counter的特殊用法

    题目描述: 题目编号:1002. 查找常用字符 给定仅有小写字母组成的字符串数组 A,返回列表中的每个字符串中都显示的全部字符(包括重复字符)组成的列表.例如,如果一个字符在每个字符串中出现 3 次, ...

  5. Python:collections.Counter

    collections是Python内建的一个集合模块,其中提供了许多有用的集合类: namedtuple:只有属性的简易类 deque:双向增删的List ChainMap:多个字典的链接 Coun ...

  6. python3-知识扩展扫盲易忘-map,collections.Counter()的用法

    map() 会根据提供的函数对指定序列做映射. 第一个参数 function 以参数序列中的每一个元素调用 function 函数,返回包含每次 function 函数返回值的新列表. >> ...

  7. python collections.Counter笔记

    Counter是dict的子类,所以它其实也是字典.只不过它的键对应的值都是计数,值可以是任意整数.下面是四种创建Counter实例的例子: >>> c = Counter() # ...

  8. python collections中Counter类

    Counter是dict的一个子类,因此具有dict的属性与方法.如常用的iteritems, items, get, pop. class Counter(dict): 如果Key不存在,将返回0, ...

  9. collections系列之Counter

    collections模块中有一个叫做Counter的类,该类的作用就是计数器,Counter是对dict的加工,所有Counter继承了dict的方法 1.创建一个Counter,需要import ...

随机推荐

  1. google软件测试之道读后感(二)

    这几天又翻了几页这本书,觉得妙语连珠,关键语录摘抄如下,并补充自己的一些思考: "如果你想要求一个团队去尝试新的事物或者做某些改进,给他们提供一个联系人会更好一些,这个联系人来源于更大的社区 ...

  2. Nginx均衡TCP协议服务器案例

    Nginx在企业运维中通常用来均衡HTTP协议,例如我们熟知的80.8080.8081等服务.因为大部分的服务都是http请求访问协议,那有时候需要用到TCP协议,如果来实现均衡呢? 默认nginx不 ...

  3. 大数据学习系列之三 ----- HBase Java Api 图文详解

    版权声明: 作者:虚无境 博客园出处:http://www.cnblogs.com/xuwujing CSDN出处:http://blog.csdn.net/qazwsxpcm 个人博客出处:http ...

  4. 《跟我学IDEA》一、下载安装idea,设置背景字体编码,配置JDK

    写在前面的话:作为一个在IT界摸爬滚打6年+的老程序员,我属于会的东西多而杂,但是没有任何一样精通的.曾经自己也认真过,蹉跎过,最近和别的同事朋友聊天时,突然发现自己得到的东西却很少很少,于是想认真的 ...

  5. 【机器学习】RNN学习

    感谢中国人民大学的胡鹤老师,课程容量巨大,收获颇丰. 之前提到的CNN模型主要用到人类的视觉中枢,但其有一劣势,无论是人类的视觉神经还是听觉神经,所接受到的都是一个连续的序列,使用CNN相当于割裂了前 ...

  6. java基础解析系列(十一)---equals、==和hashcode方法

    java基础解析系列(十一)---equals.==和hashcode方法 目录 java基础解析系列(一)---String.StringBuffer.StringBuilder java基础解析系 ...

  7. AspNet Core Api Restful 实现微服务之旅 (一)

    (一)了解微服务(二)搭建VS项目框架  (三)创建AspNet Core Api VS2017 安装包   链接:https://pan.baidu.com/s/1hsjGuJq 密码:ug59 创 ...

  8. ArrayList与数组间的转换

    关键句:String[] array = (String[])list.toArray(new String[size]); public class Test { public static voi ...

  9. 八皇后問題 (C語言递归實現 回溯法)

    八皇后问题是一个以国际象棋为背景的问题:怎样可以在 8×8 的国际象棋棋盘上放置八个皇后,使得不论什么一个皇后都无法直接吃掉其它的皇后?为了达到此目的.任两个皇后都不能处于同一条横行.纵行或斜线上.現 ...

  10. configure:cannot guess build type; you must specify one

    换了msys2后.编译xerces-c-2.8.0../runConfigure -pmingw-msys -cgcc -xg++ -s -P/opt/xercesc-2.8.0 后遇到如标题所看到的 ...