Python中collections.Counter()的具体使用

目录
  • Counter类
    • 创建
    • 计数值的访问与缺失的键
    • 计数器的更新
    • 键的删除
    • elements()
    • most_common([n])
    • fromkeys
    • 浅拷贝copy
    • 算术和集合操作
    • 常用操作

Counter类

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

创建

Counter是一个容器对象,主要的作用是用来统计散列对象,可以使用三种方式来初始化

  • 参数里面参数可迭代对象 Counter("success")
  • 传入关键字参数 Counter((s=3,c=2,e=1,u=1))
  • 传入字典 Counter({"s":3,"c"=2,"e"=1,"u"=1})

下面的代码说明了Counter类创建的方法:

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

计数值的访问与缺失的键

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

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

计数器的更新

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

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

增加使用update()方法:

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

减少则使用subtract()方法:

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

键的删除

当计数值为0时,并不意味着元素被删除,删除元素应当使用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})

elements()

返回一个迭代器。

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

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

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)]

fromkeys

未实现的类方法。

浅拷贝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})

算术和集合操作

+、-、&、|操作也可以用于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})

常用操作

下面是一些Counter类的常用操作,来源于Python官方文档。

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个元素
c += Counter()  # 移除0和负值

到此这篇关于Python中collections.Counter()的具体使用的文章就介绍到这了,更多相关Python collections.Counter()内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 简单掌握Python的Collections模块中counter结构的用法

    counter 是一种特殊的字典,主要方便用来计数,key 是要计数的 item,value 保存的是个数. from collections import Counter >>> c = Counter('hello,world') Counter({'l': 3, 'o': 2, 'e': 1, 'd': 1, 'h': 1, ',': 1, 'r': 1, 'w': 1}) 初始化可以传入三种类型的参数:字典,其他 iterable 的数据类型,还有命名的参数对. | __init

  • Python中Collections模块的Counter容器类使用教程

    1.collections模块 collections模块自Python 2.4版本开始被引入,包含了dict.set.list.tuple以外的一些特殊的容器类型,分别是: OrderedDict类:排序字典,是字典的子类.引入自2.7. namedtuple()函数:命名元组,是一个工厂函数.引入自2.6. Counter类:为hashable对象计数,是字典的子类.引入自2.7. deque:双向队列.引入自2.4. defaultdict:使用工厂函数创建字典,使不用考虑缺失的字典键.引

  • Python中collections.Counter()的具体使用

    目录 Counter类 创建 计数值的访问与缺失的键 计数器的更新 键的删除 elements() most_common([n]) fromkeys 浅拷贝copy 算术和集合操作 常用操作 Counter类 Counter类的目的是用来跟踪值出现的次数.它是一个无序的容器类型,以字典的键值对形式存储,其中元素作为key,其计数作为value.计数值可以是任意的Interger(包括0和负数).Counter类和其他语言的bags或multisets很相似. 创建 Counter是一个容器对象

  • Python中使用Counter进行字典创建以及key数量统计的方法

    这里的Counter是指collections中的Counter,通过Counter可以实现字典的创建以及字典key出现频次的统计.然而,使用的时候还是有一点需要注意的小事项. 使用Counter创建字典通常有4种方式.其中,第一种方式是不带任何参数创建一个空的字典.剩下的三种分别在下面通过简单的代码进行演示. 创建方法2示范代码: need python.' cell1 =(2,2,3,5,5,4,3,2,1,1,2,3,3,2,2) list1 =[2,2,3,5,5,4,3,2,1,1,2

  • Python 中的 Counter 模块及使用详解(搞定重复计数)

    文章目录 参考描述Counter 模块Counter() 类Counter() 对象字典有序性KeyError魔术方法 \_\_missing\_\_ update() 方法 Counter 对象的常用方法most_common()elements()total()subtract() Counter 对象间的运算加法运算减法运算并集运算交集运算单目运算 Counter 对象间的比较>== 参考 项目 描述 Python 标准库 DougHellmann 著 / 刘炽 等 译 搜索引擎 Bing

  • python 中collections的 deque使用详解

    目录 1 概要 2 重要方法说明 3 总结 1 概要 deque 是一个双端队列, 如果要经常从两端append 的数据, 选择这个数据结构就比较好了, 如果要实现随机访问,不建议用这个,请用列表. deque 优势就是可以从两边append ,appendleft 数据. 这一点list 是没有的. #-*- coding: UTF-8 -*- import time from collections import deque # 可以指定 队列的长度 mydeque=deque(maxlen

  • Python中collections模块的基本使用教程

    前言 之前认识了python基本的数据类型和数据结构,现在认识一个高级的:Collections,一个模块主要用来干嘛,有哪些类可以使用,看__init__.py就知道 '''This module implements specialized container datatypes providing alternatives to Python's general purpose built-in containers, dict, list, set, and tuple. * named

  • 浅谈python中统计计数的几种方法和Counter详解

    1) 使用字典dict() 循环遍历出一个可迭代对象中的元素,如果字典没有该元素,那么就让该元素作为字典的键,并将该键赋值为1,如果存在就将该元素对应的值加1. lists = ['a','a','b',5,6,7,5] count_dict = dict() for item in lists: if item in count_dict: count_dict[item] += 1 else: count_dict[item] = 1 2) 使用defaultdict() defaultdi

  • Python中内建模块collections如何使用

    collections是Python内建的一个集合模块,提供了许多有用的集合类. 这里举几个例子: namedtuple 我们知道tuple可以表示不变集合,例如,一个点的二维坐标就可以表示成: >>> p = (1, 2) 但是,看到(1, 2),很难看出这个tuple是用来表示一个坐标的. 定义一个class又小题大做了,这时,namedtuple就派上了用场: >>> from collections import namedtuple >>>

  • 详解Python 中的容器 collections

    写在之前 我们都知道 Python 中内置了许多标准的数据结构,比如列表,元组,字典等.与此同时标准库还提供了一些额外的数据结构,我们可以基于它们创建所需的新数据结构. Python 附带了一个「容器」模块 collections,它包含了很多的容器数据类型,今天我们来讨论其中几个常用的容器数据类型,掌握了这几个可以减少我们重复造轮子所带来的烦扰. namedtuple 相信你已经熟悉了元组.一个元组相当于一个不可变的列表,你可以存储一个数据的序列.这里要说的 namedtuple(命名元组)和

  • Python中的collections集合与typing数据类型模块

    目录 一.collections集合 1.namedtuple:命名tuple对象 2.deque:双端队列 3.defaultdict:默认字典 4.OrderedDict:顺序字典 5.Counter:计数器 二.typing模块 1.typing模块的作用 2.使用typing模块 4.typing常用类型 一.collections集合 collections是Python内建的一个集合模块,提供了许多有用的集合类. 1.namedtuple:命名tuple对象 namedtuple是一

随机推荐