【Python基础】collections.Counter()

简介

Counter()函数是 collections 库中内置函数,collections 库主要是提供处理数据结构的一些容器以及操作,其中最常见的功能就是Counter()以及Defaultdict(),本文主要介绍collections.Counter()

这个函数刷 leetcode 的时候经常用到,非常重要!

使用方法

Counter()主要是用来统计数组或者字符串中每个元素出现的次数,并返回一个字典,键为元素,值为元素个数。

举个简单的例子:

nums1 = [1,2]
nums2 = [-2,-1]
count12 = collections.Counter(u + v for u in nums1  for v in nums2 )

输出:

Counter({0: 2, -1: 1, 1: 1})

当然,还有很多不同的用法,可以直接初始化,比如下面这些:

c = Counter()                           # a new, empty counter
print(c)
c = Counter('gallahad')                 # a new counter from an iterable
print(c)
c = Counter({'red': 4, 'blue': 2})      # a new counter from a mapping
print(c)
c = Counter(cats=4, dogs=8)             # a new counter from keyword args
print(c)

输出都是字典格式:

Counter()
Counter({'a': 3, 'l': 2, 'g': 1, 'h': 1, 'd': 1})
Counter({'red': 4, 'blue': 2})
Counter({'dogs': 8, 'cats': 4})

Counter 对象有一个字典接口,如果引用的键没有任何记录,就返回一个0,而不是弹出一个KeyError

c = Counter(['eggs', 'ham'])
c['bacon']                              # count of a missing element is zero
0

方法

Counter对象支持以下三个字典不支持的方法

elements()方法

返回一个迭代器,其中每个元素将重复出现计数值所指定次。元素会按首次出现的顺序返回。如果一个元素的计数值小于1,elements()将会忽略它。

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

elements()方法要求正整数计数。忽略0和负数计数

most_common(n)方法

返回一个列表,包含counter中n个最大数目的元素。

Counter('abracadabra').most_common(3)
[('a', 5), ('b', 2), ('r', 2)] # c出现一次则不会在列表中

most_common()方法在值需要排序的时候用

subtract(iterable-or-mapping)方法

从 迭代对象 或 映射对象 减去元素。是减去,而不是替换。输入和输出都可以是0或者负数

c = Counter(a=4, b=2, c=0, d=-2)
d = Counter(a=1, b=2, c=3, d=4)
c.subtract(d)
c
Counter({'a': 3, 'b': 0, 'c': -3, 'd': -6})

相关推荐

  1. Python基础

    2024-03-21 08:02:02       19 阅读
  2. pythonpython基础1

    2024-03-21 08:02:02       11 阅读
  3. PythonPython基础

    2024-03-21 08:02:02       11 阅读

最近更新

  1. 指向如此神奇:揭示Js函数this的10个惊人事实!

    2024-03-21 08:02:02       0 阅读
  2. k8s 使用 helm 文件部署 8.12.2 es 分角色集群

    2024-03-21 08:02:02       1 阅读
  3. 数据编码的艺术:sklearn中的数据转换秘籍

    2024-03-21 08:02:02       1 阅读
  4. android pdf框架-11,查看图片

    2024-03-21 08:02:02       1 阅读
  5. 深入探索:scikit-learn中递归特征消除(RFE)的奥秘

    2024-03-21 08:02:02       1 阅读
  6. 需求分析分类和层级、分析步骤

    2024-03-21 08:02:02       1 阅读
  7. js list to tree

    2024-03-21 08:02:02       1 阅读
  8. 02更新用户在线状态

    2024-03-21 08:02:02       1 阅读
  9. CSS魔法:link与@import的秘密较量

    2024-03-21 08:02:02       1 阅读
  10. 第12章:软件系统分析与设计

    2024-03-21 08:02:02       1 阅读

热门阅读

  1. 请求为blob,但是返回json格式,如何处理

    2024-03-21 08:02:02       19 阅读
  2. 数据结构(一)稀疏数组

    2024-03-21 08:02:02       19 阅读
  3. 功率电感的工艺结构原理及选型参数总结

    2024-03-21 08:02:02       18 阅读
  4. conda创建新的env报错CondaVerificationError

    2024-03-21 08:02:02       20 阅读
  5. Opencv | Jupyter Notebook 安装

    2024-03-21 08:02:02       22 阅读
  6. (持续更新中)DRF相关

    2024-03-21 08:02:02       21 阅读
  7. docker和kubectl客户端安装Linux

    2024-03-21 08:02:02       23 阅读
  8. python(Django)之退出功能实现

    2024-03-21 08:02:02       19 阅读
  9. 混合精度训练(AMP)

    2024-03-21 08:02:02       16 阅读