什么是Counter

2024-01-13 03:20
文章标签 counter

本文主要是介绍什么是Counter,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Python collections.Counter用法

  • 什么是collections
  • Counter
  • Counter操作
  • 例子

什么是collections

collections在python官方文档中的解释是High-performance container datatypes,直接的中文翻译解释高性能容量数据类型
它总共包含五种数据类型:
在这里插入图片描述
其中Counter中文意思是计数器,也就是我们常用于统计的一种数据类型,在使用Counter之后可以让我们的代码更加简单易读。

Counter

我们先看一个简单的例子:

#统计词频
colors = ['red', 'blue', 'red', 'green', 'blue', 'blue']
result = {}
for color in colors:if result.get(color)==None:result[color]=1else:result[color]+=1
print (result)
#{'red': 2, 'blue': 3, 'green': 1}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

下面我们看用Counter怎么实现:

from collections import Counter
colors = ['red', 'blue', 'red', 'green', 'blue', 'blue']
c = Counter(colors)
print (dict(c))
  • 1
  • 2
  • 3
  • 4

显然代码更加简单了,也更容易读和维护了。

Counter操作

可以创建一个空的Counter:

cnt = Counter()
  • 1

之后在空的Counter上进行一些操作。
也可以创建的时候传进去一个迭代器(数组,字符串,字典等):

c = Counter('gallahad')                 # 传进字符串
c = Counter({'red': 4, 'blue': 2})      # 传进字典
c = Counter(cats=4, dogs=8)             # 传进元组
  • 1
  • 2
  • 3

判断是否包含某元素,可以转化为dict然后通过dict判断,Counter也带有函数可以判断:

c = Counter(['eggs', 'ham'])
c['bacon']                              # 不存在就返回0
#0
  • 1
  • 2
  • 3

删除元素:

c['sausage'] = 0                        # counter entry with a zero count
del c['sausage']   
  • 1
  • 2

获得所有元素:

c = Counter(a=4, b=2, c=0, d=-2)
list(c.elements())
#['a', 'a', 'a', 'a', 'b', 'b']
  • 1
  • 2
  • 3

查看最常见出现的k个元素:

Counter('abracadabra').most_common(3)
#[('a', 5), ('r', 2), ('b', 2)]
  • 1
  • 2

Counter更新:

c = Counter(a=3, b=1)
d = Counter(a=1, b=2)
c + d                       # 相加
#Counter({'a': 4, 'b': 3})
c - d                       # 相减,如果小于等于0,删去
#Counter({'a': 2})
c & d                       # 求最小
#Counter({'a': 1, 'b': 1})
c | d                       # 求最大
#Counter({'a': 3, 'b': 2})
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

例子

例子:读文件统计词频并按照出现次数排序,文件是以空格隔开的单词的诸多句子:

from collections import Counter
lines = open("./data/input.txt","r").read().splitlines()
lines = [lines[i].split(" ") for i in range(len(lines))]
words = []
for line in lines:words.extend(line)
result = Counter(words)
print (result.most_common(10))
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

当需要统计的文件比较大,使用read()一次读不完的情况:

from collections import Counter
result = Counter()
with open("./data/input.txt","r") as f:while True:lines = f.read(1024).splitlines()if lines==[]:breaklines = [lines[i].split(" ") for i in range(len(lines))]words = []for line in lines:words.extend(line)tmp = Counter(words)result+=tmp

print (result.most_common(10))

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

具体可以参考 https://docs.python.org/2/library/collections.html#collections.Counter.most_common

原文链接:https://blog.csdn.net/qwe1257/article/details/83272340

这篇关于什么是Counter的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/600076

相关文章

argue counter 和argumentvector 啥意思 zz百度百科

argc argv   编辑 本词条缺少 名片图,补充相关内容使词条更完整,还能快速升级,赶紧来 编辑吧! ARGc和 ARGv中的 ARG指的是 "参数 "(外语: ARG uments, argument counter 和 argument vector )  [1] 至少有两个参数至 主函数:ARGc和ARGv; 首先是一个计算提供的参数到程序, 第二个是对字

【Python】Counter类(计数器)

Counter(计数器):用于追踪值的出现次数 Counter类继承dict类,所以它能使用dict类里面的方法   创建一个Counter类 import collectionsobj = collections.Counter('aabbccc')print(obj)#输出:Counter({'c': 3, 'a': 2, 'b': 2}) elements() import

【python高级编程】python中的Counter对象统计词频

使用Counter对象进行词频统计 统计词频是非常常见的一个实际场景应用,假设我们要对文章进行词频统计,我们可以利用python中的字典+遍历的方法来统计,但是这样比较麻烦,我们可以使用collections模块中的Counter对象方便的进行词频统计。 from collections import Counterfrom random import randint# 统计字典词频dat

Python中time.perf_counter模块的简单用法

终于貌似把第一个工作任务取得了实质性进展!也有心情把这篇文章补上. 工作中碰到了time.perf_counter这个方法,网上只查到很少的信息, 中文简介如下,其实就是对官方文档的一个翻译,也没看到具体用法 time.perf_counter() 返回性能计数器的值(以分秒为单位),即具有最高可用分辨率的时钟,以测量短持续时间。它包括在睡眠期间和系统范围内流逝的时间。返回值的参考点未定义

collection 中 Counter的使用

collection.Counter 的使用 “”” https://docs.python.org/3.6/library/collections.html#collections.Counter Counter 是 dict 子类 A counter tool is provided to support convenient and rapid tallies. 提供计数器工具以

如何使用resource-counter统计跨Amazon区域的不同类型资源数量

关于resource-counter resource-counter是一款功能强大的命令行工具,该工具基于纯Python 3开发,可以帮助广大研究人员跨Amazon区域统计不同类型资源的数量。 该工具在统计完不同区域的各类资源数量后,可以在命令行中输出并显示统计结果。resource-counter首先会以每个区域为基础显示受监控服务的结果字典,然后以更友好的格式显示所有区域的资源数量总

【ARMv8/v9 系统寄存 3 -- system counter CNTPCT_EL0】

文章目录 ARMv8/v9 system countersystem counter读取函数实现 ARMv8/v9 system counter 所有使用Arm处理器的系统中都会包含一个标准化的通用定时器(Generic Timer)框架。这个通用定时器系统提供了一个系统计数器(System Counter)和一组定时器(Timer)。其结构类似下图: 系统计数器是全局唯一

css实现对元素编号,加序号(counter-reset、counter-increment、counter()的使用 )

counter-reset、counter-increment、counter()的使用 在实现元素编号中,可以用 ol li 制作有序列表,但是处理不了复杂点的排序,这时候就可以用到counter-reset、counter-increment、counter()这三个属性了 1、先实现简单的排序 ul{margin: 0;padding: 0;list-style: none;/*

DSP笔记13-时间基准子模块Time base(TB)比较子模块Counter cpmpare(CC)

时间基准子模块Time base(TB) 同步,计数 CTR计数寄存器 PRD周期寄存器 CMP比较寄存器,占空比 EPWMA, EPWMB,两个比较寄存器,但只有以及计数寄存器以及一个周期寄存器 计数模式 计数时钟TBCLK HSPCLKDIV=x  x=0,分频系数为1 x≠0,分频系数2 CLKDIV=y 分频系数2y 计数时钟TBCLK 例如x=0,y=

【博客708】victoriametrics如何处理counter跳变

victoriametrics如何处理counter跳变 背景 监控中我们经常会使用一些counter类型的metrics来计算速率,比如:rate(https_request_total) 但是如果我们的服务突然由于异常导致重启了,那么这时候counter会重新从0开始计算,那么这时候就会有问题,假设我们原来https_request_total是计数到500,然后服务异常重启,启动后ht