千家信息网

Python中Counter类如何使用

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,这篇文章主要介绍"Python中Counter类如何使用"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"Python中Counter类如何使用"文章能帮助大家解
千家信息网最后更新 2026年10月31日Python中Counter类如何使用

这篇文章主要介绍"Python中Counter类如何使用"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"Python中Counter类如何使用"文章能帮助大家解决问题。

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")>>> cCounter({"a": 2, "c": 2, "b": 2, "d": 1})>>> c["b"] = 0>>> cCounter({"a": 2, "c": 2, "d": 1, "b": 0})>>> del c["a"]>>> cCounter({"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")>>> cCounter({"a": 2, "c": 2, "b": 2, "d": 1})>>> d = c.copy()>>> dCounter({"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中的键转为setdict(c)  # 将c中的键值对转为字典c.items()  # 转为(elem, cnt)格式的列表Counter(dict(list_of_pairs))  # 从(elem, cnt)格式的列表转换为Counter类对象c.most_common()[:-n:-1]  # 取出计数最少的n个元素c += Counter()  # 移除0和负值

关于"Python中Counter类如何使用"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注行业资讯频道,小编每天都会为大家更新不同的知识点。

对象 元素 更新 方法 字典 参数 知识 迭代 容器 常用 格式 行业 计数器 顺序 不同 最小 相似 相同 个数 交集 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 华服互联网科技怎么样 互联网为科技 互联网科技未来 北京互联网科技 科技与互联网发展 西安互联网科技 互联网 科技创业 齐家互联网科技 小马过河互联网科技 上海喔噻互联网科技 互联网科技股午盘股票涨跌 哈尔滨秒房互联网科技有限公司 深圳前海聚择互联网科技有限公司 银川新华互联网科技职业技术培训学校图片 宁夏众和广鑫互联网科技有限公司 苏州铭阳互联网科技有限公司 互联网金融科技元年 上海创道互联网络科技有限公司 美国五大互联网科技公司市值多少 互联网的科技体现在哪里 互联网科技工作委员会副主任毛军 科技信息互联网 科技互联网技术 互联网科技作文 科技创新互联网企业 卓翼科技产业互联网合作 元气玛特互联网科技公司是外包吗 互联网第三次科技革命特征 互联网科技包装股份有限公司上市 互联网时代科技型公司的机会
0