首页 > 编程语言 >用Python统计次数的5种方法

用Python统计次数的5种方法

时间:2024-07-16 15:43:07浏览次数:9  
标签:count Python Counter list 次数 collections print -- 统计

一、使用字典 dict 统计

循环遍历出一个可迭代对象的元素,如果字典中没有该元素,那么就让该元素作为字典的键,并将该键赋值为1,如果存在则将该元素对应的值加1。

lists = ['a','a','b',1,2,3,1]
count_dist = dict()
for i in lists:
    if i in count_dist:
        count_dist[i] += 1
    else:
        count_dist[i] = 1
print(count_dist)
# {'a': 2, 'b': 1, 1: 2, 2: 1, 3: 1}

二、使用 collections.defaultdict 统计

defaultdict(parameter) 接受一个类型参数,例如:int、float、str 等。

传递进来的类型参数,不是用来约束值的类型,更不是约束键的类型,而是当键不存在时,实现一种值的初始化。

  • defaultdict(int) -- 初始化为0
  • defaultdict(float) -- 初始化为0.0
  • defaultdict(str) -- 初始化为''
from collections import defaultdict
lists = ['a','a','b',1,2,3,1]
count_dict = defaultdict(int)
for i in lists:
    count_dict[i] += 1
print(count_dict)
# defaultdict(<class 'int'>, {'a': 2, 'b': 1, 1: 2, 2: 1, 3: 1})

三、List count方法

count() 方法用于统计某个元素在列表中出现的次数。

使用语法

# 使用语法
list.count(obj) # 返回次数

统计单个对象次数

# 统计单个对象次数
aList = [123, 'abc', 'good', 'abc', 123]
print("Count for 123 :", aList.count(123))
print("Count for abc :", aList.count('abc'))
# Count for 123 : 2
# Count for abc : 2

统计List中每一个对象次数

test = ["aaa","bbb","aaa","aaa","ccc","ccc","ddd","aaa","ddd","eee","ddd"]
print(test.count("aaa"))
# 4
print(test.count("bbb"))
# 1

test_result = []
for i in test:
    if i not in test_result:
        test_result.append(i)
print(test_result)

for i in test_result:
    print(f"{i}:{test.count(i)}")

'''
4
1
['aaa', 'bbb', 'ccc', 'ddd', 'eee']
aaa:4
bbb:1
ccc:2
ddd:3
eee:1
'''

四、使用集合(set)和列表(list)统计

先用 set 去重,然后循环把每一个元素和对应的次数 list.count(item) 组成元组。

lists = ['a','a','b',1,2,3,1]
count_set = set(lists)
print(count_set) # 集合去重
# {1, 2, 3, 'b', 'a'}

count_list = list()
for i in count_set:
    count_list.append((i, lists.count(i)))
print(count_list)    
# [(1, 2), (2, 1), (3, 1), ('b', 1), ('a', 2)]

五、collections.Counter方法

Counter 是一个容器对象,使用 collections 模块中的 Counter 类可以实现 hash 对象的统计。

Counter 是一个无序的容器类型,以字典的键值对形式存储,其中元素作为 key,其计数作为 value。

计数值可以是任意的 Interger(包括0和负数)。

Counter() 对象还有几个可调用的方法:

  • most_common(n) -- TOP n 个出现频率最高的元素
  • elements -- 获取所有的键 通过list转化
  • update -- 增加对象
  • subtrct -- 删除对象
  • 下标访问 a['xx'] --不存在时返回0
import collections
c = collections.Counter('helloworld')
  • 直接显示各个元素频次
print(c)
# Counter({'l': 3, 'o': 2, 'h': 1, 'e': 1, 'w': 1, 'r': 1, 'd': 1})
  • 使用 most_common 显示最多的n个元素

当多个元素计数值相同时,排列是无确定顺序的。

print(c.most_common(3))
# [('l', 3), ('o', 2), ('h', 1)]
  • 使用数组下标获取,类似字典方式
print("The number of 'o':", c['o'])
# The number of 'o': 2
  • 统计列表(只要列表中对象都是可以哈希的)
import collections
x = [1,2,3,4,5,6,7,8,1,8,8,8,4,3,5]
c = collections.Counter(x)
print(c)
# Counter({1: 2, 2: 1, 3: 2, 4: 2, 5: 2, 6: 1, 7: 1, 8: 4})
print(c.most_common(3))
# [(8, 4), (1, 2), (3, 2)]
dictc = dict(c) # 转换为字典
print(dictc)
# {1: 2, 2: 1, 3: 2, 4: 2, 5: 2, 6: 1, 7: 1, 8: 4}

如果列表中有 unhashalbe 对象,例如:可变的列表,是无法统计的。

元组也可以统计。

c = collections.Counter([[1,2], "hello", 123, 0.52])
# TypeError: unhashable type: 'list'

得到 Counter 计数器对象之后,还可以在此基础上进行增量更新。

  • elements() -- 返回迭代器

元素排列无确定顺序,个数小于1的元素不被包含。

import collections
c = collections.Counter(a=4,b=2,c=1)
print(c)
# Counter({'a': 4, 'b': 2, 'c': 1})

list(c.elements())
# ['a', 'a', 'a', 'a', 'b', 'b', 'c']
  • subtract函数 -- 减去元素
import collections
c = collections.Counter(["a","b","c","a"])
print(c)
# Counter({'a': 2, 'b': 1, 'c': 1})
print(list(c.elements())) # 展开
# ['a', 'a', 'b', 'c']

# 减少元素
c.subtract(["a","b"])
print(c)
# Counter({'a': 1, 'c': 1, 'b': 0})
print(list(c.elements()))
# ['a', 'c']
  • update函数 -- 增加元素

在进行增量计数时候,update函数非常有用。

import collections
c = collections.Counter(["a","b","c","a"])
print(c)
# Counter({'a': 2, 'b': 1, 'c': 1})
print(list(c.elements())) # 展开
# ['a', 'a', 'b', 'c']

#学习中遇到问题没人解答?小编创建了一个Python学习交流群:725638078
c.update(["a","d"])
print(c)
# Counter({'a': 3, 'b': 1, 'c': 1, 'd': 1})
print(list(c.elements()))
# ['a', 'a', 'a', 'b', 'c', 'd']
  • del函数 -- 删除键

当计数值为0时,并不意味着元素被删除,删除元素应当使用del。

import collections
c = collections.Counter('helloworld')
print(c)
# Counter({'l': 3, 'o': 2, 'h': 1, 'e': 1, 'w': 1, 'r': 1, 'd': 1})

c["d"] = 0
print(c)
# Counter({'l': 3, 'o': 2, 'h': 1, 'e': 1, 'w': 1, 'r': 1, 'd': 0})

del c["l"]
print(c)
# Counter({'o': 2, 'h': 1, 'e': 1, 'w': 1, 'r': 1, 'd': 0})

标签:count,Python,Counter,list,次数,collections,print,--,统计
From: https://www.cnblogs.com/xxpythonxx/p/18305363

相关文章

  • 2024最新版Python安装详细教程!一键安装,永久使用
    打开上面的Python官网地址,如下图所示,鼠标放入网页Downloads栏目,选择里面的windows操作系统。三、进入windows对应的页面,选择python版本(1)选择python的稳定发布版本StableReleases点击进入windows操作系统对应的页面,显示python安装版本,这些python安装版本适合windows操......
  • 安装python方法在Windows环境
    一、下载安装包​ 下载地址:​ https://www.python.org/downloads/​ 安装注意勾选:​ 注:安装位置可用默认C盘。二、更改国内源​ 更改配置文件:如没有文件创建文件。​ 位置:"C:\Users\32974\AppData\Roaming\pip\pip.ini"​ 添加内容:一条源。[global]index-url=ht......
  • 深度学习全景进阶:Python深度学习
    近年来,伴随着以卷积神经网络(CNN)为代表的深度学习的快速发展,人工智能迈入了第三次发展浪潮,AI技术在各个领域中的应用越来越广泛。注意力机制、Transformer模型(BERT、GPT-1/2/3/3.5/4、DETR、ViT、SwinTransformer等)、生成式模型(变分自编码器VAE、生成式对抗网络GAN、扩散模型Di......
  • 字节跳动内网开源的《Python项目开发实战》,GitHub飙升!
    今天给小伙伴们分享的这份手册的内容共15个章节,总共可以分为四个部分。第一部分,主要讲“Python开发入门”,这部分将重点放在了个人开发上,涵盖了简单的web应用开发和Python项目结构等。第二部分,主要讲“团队开发周期”,介绍书中的极客们在多人团队开发中遇到的问题,以及如何提......
  • python在库的基础上修改
    问题想在引用库的基础上简单修改里面的内容。方法把库函数拷贝到本地进行修改。找到库函数库函数的下载路径跟系统设置、win还是linux、是否是虚拟环境都有关。这里以linux系统、有虚拟环境为例:/home/用户名/anaconda3/envs/虚拟环境名/lib/python版本(例如python3.8)/site-pa......
  • python接口自动化(二十八)--html测试 报告——下(详解)
    宏哥微信粉丝群:https://bbs.csdn.net/topics/618423372 有兴趣的可以扫码加入1.简介五一小长假已经结束了,想必大家都吃饱喝足玩好了,那就继续学习吧。一天不学习,自己知道;两天不学习,对手知道;三天不学习,大家知道;一周不学习,智商输给猪。好了开个玩笑都逗大家一乐,但是想想还......
  • 《Python 数据类型大冒险》
    一、数值类型1 整数类型与数学中的整数含义相同,无取值范围;整数包括二进制、八进制、十进制、十六进制等4种表示形式;二进制:以0b或0B开头:0b1101,-0B10;八进制:以0o或0O开头:0o456,-0O789;十进制:123,-321,0;十六进制:以0x或0X开头:0x1A,-0X2B。如:0b1010=0o12=10=0xa代......
  • (02)Unity使用在线AI大模型(调用Python)
    目录一、概要二、改造Python代码三、制作Unity场景一、概要    查看本文需完成(01)Unity使用在线AI大模型(使用百度千帆服务)的阅读和实操,本文档接入指南的基础上使用Unity+C#调用百度千帆大模型,需要阅读者有一定的Unity开发基础。此功能本质上就是拿Python大模......
  • 104-Python中字符串索引和切片
    Python中字符串索引和切片greeting_str='Hey,James!'#打印字符串长度print('字符串的长度为:')print(len(greeting_str))#字符串的长度为:#11#打印每个字符和对应的索引forindex,charinenumerate(greeting_str):print(f"字符:{char},索引:{index}")#字符:H,索......
  • Windows安装Python超详细教程
    安装Python3(Windows)有的同学问道怎么安装Python。我们今天讲一下在Windows上安装Python。Python有两个大版本,一个是Python2,另外一个是Python3。目前各种代码以及平台都在往Python3迁移,新项目直接采用Python3。对于新学习的朋友来说,可以直接从Python3开始入手。下载Python......