5种Python统计次数的方法
一、使用字典 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] += 1else: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) – 初始化为’’
'''
学习中遇到问题没人解答?小编创建了一个Python学习交流QQ群:531509025
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
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"))
# 1test_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) 组成元组。
'''
学习中遇到问题没人解答?小编创建了一个Python学习交流QQ群:531509025
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
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的元素不被包含。
'''
学习中遇到问题没人解答?小编创建了一个Python学习交流QQ群:531509025
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
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函数非常有用。
'''
学习中遇到问题没人解答?小编创建了一个Python学习交流QQ群:531509025
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
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.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})
结尾给大家推荐一个非常好的学习教程,希望对你学习Python有帮助!
Python基础入门教程推荐:更多Python视频教程-关注B站:Python学习者
【Python教程】全网最容易听懂的1000集python系统学习教程(答疑在最后四期,满满干货)
Python爬虫案例教程推荐:更多Python视频教程-关注B站:Python学习者
2021年Python最新最全100个爬虫完整案例教程,数据分析,数据可视化,记得收藏哦
5种Python统计次数的方法相关推荐
- python中统计次数的方法(出现次数、总数)
1.统计循环内输出的总数 # 求1--N之间可以被7整除的数的总个数. def count():N=int(input("请输入整数:"))b=0 #用于统计循环的个数for a ...
- 教你两种python selenium保存图片的方法
大家好,本篇文章主要讲的是python selenium保存图片最好的两种方法,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下 selenium爬取页面时经常遇到要保存图片的需求,通常的做法是 ...
- python统计次数正则_Python提取信息必学基础——正则表达式
正则表达式并不是Python的一部分.正则表达式是用于处理字符串的强大工具,拥有自己独特的语法以及一个独立的处理引擎,效率上可能不如str自带的方法,但功能十分强大.得益于这一点,在提供了正则表达式的 ...
- 8种Python字符串拼接的方法,你知道几种?
一.join函数 join 是 python 中字符串自带的一个方法,返回一个字符串.使用语法为: sep.join(可迭代对象) --> str # sep 分隔符 可以为空 将一个包含多个字 ...
- python递归详解_打破递归栈的深度限制: 解析一种Python尾递归优化的方法
Python的递归调用栈的深度有限制, 可以通过sys.getrecursionlimit()查看. 尾递归在很多语言中都可以被编译器优化, 基本都是直接复用旧的执行栈, 不用再创建新的栈帧, 原理上 ...
- 520,送你四种Python画玫瑰的方法
今天又是520
- Python 多进程异常处理的方法,你会吗
最近项目用到了Python作为网站的前端,使用的框架是基于线程池的Cherrypy,但是前端依然有一些比较'重'的模块.由于python的多线程无法很好的利用多核的性质,所以觉得把这些比较'重'的功能 ...
- mysql一秒查询次数_单个select语句实现MySQL查询统计次数
单个select语句实现MySQL查询统计次数 单个select语句实现MySQL查询统计次数的方法用处在哪里呢?用处太多了,比如一个成绩单,你要查询及格得人数与不及格的人数,怎么一次查询出来? My ...
- Python统计词频的几种方法
本文介绍python统计词频的几种方法,供大家参考 目录 方法一:运用集合去重方法 方法二:运用字典统计 方法三:使用计数器 方法一:运用集合去重方法 def word_count1(words,n) ...
最新文章
- .ARM.exidx
- 两栏布局,三栏布局,等高布局,流式布局
- JavaScript操作大全整理(思维导图三--函数基础)
- Hollis原创|深入分析Java的编译原理
- [Vue.js] 模块化 -- 前端模块化
- uva11609(组合数学,快速幂)
- 提高网页效率的14条准则
- PHP去除所有的空格
- IO编程(对IO是什么的详解)
- 不可逆调速matlab,双闭环不可逆直流调速系统课程设计(matlab仿真设计)
- 聚类算法之DBSCAN
- win7连接打印机0x0000011b错误的解决办法
- 图像处理领域公认的重要英文期刊(SCI收录)
- RingBuffer
- 从.weights中提取权重数据
- unreal4特性介绍
- 文件不见还占用空间咋修复
- RVDS 3.1 下载地址及破解方法
- 计算机系统集成及运维,信息系统集成资质取消!ITSS或将取代其招投标地位!...
- 3. node.js 异步式I/O或非阻塞式I/O