collections --Counter
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的更多相关文章
- slice.indices()/collections.Counter笔记
关于slice.indices() >>> help(slice) Help on class slice in module builtins: class slice(objec ...
- [PY3]——找出一个序列中出现次数最多的元素/collections.Counter 类的用法
问题 怎样找出一个序列中出现次数最多的元素呢? 解决方案 collections.Counter 类就是专门为这类问题而设计的, 它甚至有一个有用的 most_common() 方法直接给了你答案 c ...
- collections.Counter类统计列表元素出现次数
# 使用collections.Counter类统计列表元素出现次数 from collections import Counter names = ["Stanley", &qu ...
- 一道算法题,引出collections.Counter的特殊用法
题目描述: 题目编号:1002. 查找常用字符 给定仅有小写字母组成的字符串数组 A,返回列表中的每个字符串中都显示的全部字符(包括重复字符)组成的列表.例如,如果一个字符在每个字符串中出现 3 次, ...
- Python:collections.Counter
collections是Python内建的一个集合模块,其中提供了许多有用的集合类: namedtuple:只有属性的简易类 deque:双向增删的List ChainMap:多个字典的链接 Coun ...
- python3-知识扩展扫盲易忘-map,collections.Counter()的用法
map() 会根据提供的函数对指定序列做映射. 第一个参数 function 以参数序列中的每一个元素调用 function 函数,返回包含每次 function 函数返回值的新列表. >> ...
- python collections.Counter笔记
Counter是dict的子类,所以它其实也是字典.只不过它的键对应的值都是计数,值可以是任意整数.下面是四种创建Counter实例的例子: >>> c = Counter() # ...
- python collections中Counter类
Counter是dict的一个子类,因此具有dict的属性与方法.如常用的iteritems, items, get, pop. class Counter(dict): 如果Key不存在,将返回0, ...
- collections系列之Counter
collections模块中有一个叫做Counter的类,该类的作用就是计数器,Counter是对dict的加工,所有Counter继承了dict的方法 1.创建一个Counter,需要import ...
随机推荐
- mysql优化sql语句的方法
1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索 ...
- [菜鸟弄nginx]nginx ---- 同一个server下根据host 配置不同的error_page页
有一个需求: 两个域名指向同一个nignx,不同的域名404跳转页面不同.如www.y.com跳到www.y.com/error.html ,www.j.com跳到www.j.com/errorxxx ...
- Java数据结构和算法(七)——链表
前面博客我们在讲解数组中,知道数组作为数据存储结构有一定的缺陷.在无序数组中,搜索性能差,在有序数组中,插入效率又很低,而且这两种数组的删除效率都很低,并且数组在创建后,其大小是固定了,设置的过大会造 ...
- 学习python登录demo
要求编写登录接口 : 1. 输入用户名和密码 2.认证成功后显示欢迎信息 3.用户名输错,提示用户不存在,重新输入(5次错误,提示尝试次数过多,退出程序) 4.用户名正确,密码错误,提示密码错误,重新 ...
- PDFBox 打印带背景的文件速度慢
打印慢的原因 java的RasterPrinterJob会执行很多次printPage方法 他应该是按块填充的, 如果页面元素非常复杂, 那么printPage方法可能会执行十几次. 而如果你用了如下 ...
- HTMLCSS实现左侧固定宽度右侧内容可滚动
在做移动端页面的时候,经常会碰到一个div中分左右两个div,左侧div固定宽度或百分比,右侧div中内容左右溢出,需要左右滑动才可以浏览到全部内容,为此写了一个demo. 处理这个问题的核心关键点是 ...
- 自学Python全栈开发第一次笔记
我已经跟着视频自学好几天Python全栈开发了,今天决定听老师的,开始写blog,听说大神都回来写blog来记录自己的成长. 我特别认真的跟着这个视频来学习,(他们开课前的保证书,我也写 ...
- 关于python2.7从数据库读取中文显示乱码的问题解决
#!/usr/bin/env python # _*_ coding:utf-8 _*_ import MySQLdb import sys str = raw_input("please ...
- 支持国内版Office 365的PowerShell模块现已发布
作者:陈希章 发表于2017年5月12日 上一篇文章我详细介绍了如何在PowerShell中访问到Office 365的Graph API,在文章结尾处我留了一个问题,希望有朋友可以根据那个思路,尝试 ...
- 分布式系统的消息&服务模式简单总结
分布式系统的消息&服务模式简单总结 在一个分布式系统中,有各种消息的处理,有各种服务模式,有同步异步,有高并发问题甚至应对高并发问题的Actor编程模型,本文尝试对这些问题做一个简单思考和总结 ...