首页 > 其他分享 >collection.Counter(对象计数)

collection.Counter(对象计数)

时间:2025-01-20 12:32:49浏览次数:1  
标签:25 counter eggs Counter collection 计数 key print

collection.Counter类: 一个方便统计对象数量的类,提供了一些方便使用的方法。它是内置dict类的子类,所以也具有dict的绝大部分特性及功能。

我们统计一个列表,元组,等序列时,有时需要统计每种元素出现的次数。 下面示例模拟一个我们自己会实现的方法:

word = "mississippi"
counter = {}

for letter in word:
    if letter not in counter:
        counter[letter] = 0
    counter[letter] += 1

print(counter)   # {'m': 1, 'i': 4, 's': 4, 'p': 2}

我们把每种元素做为key,将其出现的次数做为value,放在一个数据字典中。

现在我们使用Counter类来实现上面的统计功能。

from collections import Counter

word = "mississippi"
# Use a string as an argument
print(Counter("mississippi"))
# Use a list as an argument
print(Counter(list("mississippi")))

Counter类通过传入可迭代对象,就构造了一个Counter对象,同时内部统计数据会存储为数据字典结构。
Counter对象的构造: 不传参数则实例化一个空的Counter对象。除此之外,可以传入iterable, dictionary, 命名参数等。甚至可以将另一个counter对象做为参数。

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

可以用c['key']的方式来访问一个数据,但与dict不同的是,如果该'key'不存在不会报错,而是返回0。 而c['key'] = 0 不是删除'key',而是应该使用del c['key']来删除。

from collections import Counter

c = Counter(['eggs', 'ham'])
print(c)   # Counter({'eggs': 1, 'ham': 1})
print('-' * 25, '分隔线', '-' * 25)

print(c['bacon'])  # 0
c['eggs'] = 0
print(c)    # Counter({'ham': 1, 'eggs': 0})

print('-' * 25, '分隔线', '-' * 25)
del c['eggs']
print(c)  # Counter({'ham': 1})

Counter.elements(): 返回一个迭代器,元素的顺序与Counter中的key的顺序保持一致。

from collections import Counter

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

Counter.most_common([n]): 返回一个(key, count)元组的列表,按照出现元素出现次数的高低顺序来返回。如果指定了参数n,则只返回前n项。 当两个key对应相同的count时,由原始iterable中元素出现的先后顺序决定。

from collections import Counter

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

标签:25,counter,eggs,Counter,collection,计数,key,print
From: https://www.cnblogs.com/rolandhe/p/18681121

相关文章

  • 奥运奖牌计数(信息学奥赛一本通-1064)
    【题目描述】2008年北京奥运会,A国的运动员参与了n天的决赛项目(1≤n≤17)。现在要统计一下A国所获得的金、银、铜牌数目及总奖牌数。输入第1行是A国参与决赛项目的天数n,其后n行,每一行是该国某一天获得的金、银、铜牌数目。输出4个整数,为A国所获得的金、银、铜牌总数及总奖牌......
  • 计数问题学习笔记
    基础差得死,整版讲课课件能看懂的就\(10\%\),所以过来补一补。数学那一块差不多,计划单开一个博客。分类整理以下吧。卡特兰数问题引入有一个大小为\(n\timesn\)的网格图,每次从\((x,y)\)只能走一步到\((x+1,y)\)或\((x,y+1)\),求不走到对角线即\(y=x\)下方,但可以触碰对......
  • Python中的字典优化:如何高效使用`defaultdict`和`Counter`
    《PythonOpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门!解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界在Python编程中,字典(dict)是最常用的数据结构之一,广泛应用于数据存储、检索和操作。然而,随着数据规模的增大和复杂性的提升,传统字典在某些场景下......
  • HDLBits-Verilog:Counter 1000
    从1000Hz时钟中,得出一个1Hz信号,称为 OneHertz,该信号可用于驱动一组小时/分钟/秒计数器的启用信号,以创建数字挂钟。由于我们希望clock每秒计数一次,因此 OneHertz 信号必须每秒正好置位一个周期。使用modulo-10(BCD)计数器和尽可能少的其他门构建分频器。此外,还输出......
  • 【AI中数学-概率论】 离散型变量:计数的艺术
    第四章概率论第4节离散型变量:计数的艺术离散型变量是概率论中的重要组成部分,它们在统计建模、数据分析和人工智能领域中扮演着关键角色。离散型变量用于描述可数的、离散的事件或现象,常见于计数数据、分类数据和顺序数据等场景。本节将深入探讨离散型变量的定义、性质、常......
  • svn检出has encountered a problem cannot checkout
    报错信息:"svn检出hasencounteredaproblemCannotcheckout"表示Subversion(SVN)在尝试检出(即下载)版本控制仓库的时候遇到了问题。解释:这个错误通常意味着SVN客户端无法完成检出操作,可能的原因有多种,包括网络问题、权限问题、URL错误、服务器不可达或者客户端与服务器版本不......
  • 计算机视觉实战项目(图像分类+目标检测+目标跟踪+姿态识别+车道线识别+车牌识别+无人
    往期热门项目回顾:链接失效时请主页搜索关键词!!!!文章目录**往期热门项目回顾:**车辆跟踪及测距yolov5deepsort行人/车辆(检测+计数+跟踪+测距+测速)目标跟踪车道线识别语义分割姿态识别图像分类交通标志识别表情识别、人脸识别疲劳检测车牌识别代码图像去雾去雨+......
  • collections.OrderedDict
    在Python的collections模块中,OrderedDict是一个非常有用的类,它是一个字典的子类,能够记住元素插入的顺序。这在需要保持键值对顺序的场景中非常有用,尤其是在处理需要顺序操作的数据时。可以像创建普通字典一样创建OrderedDict,但OrderedDict会记住元素插入的顺序#创建一个空的Ord......
  • D. [CSP-J二十连测第九套 ] --T4--计数(count)
    D.[CSP-J二十连测第九套]--T4--计数(count)这道题是一道很好的dp。假设留下的序列是\(b\),首先有个4个性质:最后剩下的是原序列\(a\)的子序列。对于\(b_1\),他在原序列中假设位置为\(x\),那么从\(a_1\)\(a_x\)的最小值必须是\(b_1\)。对于\(b_n\),他在原序列中假设位......
  • mysql-sql统计数据sql整理
    一、查询SQLSELECTt1.规则编号AS编码,t1.规则描述AS名称,SUM(CASEWHENt3.DATA_SOURCES='00'THEN1ELSE0END)AS'类型01',SUM(CASEWHENt3.DATA_SOURCES='01'THEN1ELSE0END)AS'类型02',SUM(CASEW......