一、使用字典 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统计次数的方法相关推荐

  1. python中统计次数的方法(出现次数、总数)

    1.统计循环内输出的总数 # 求1--N之间可以被7整除的数的总个数. def count():N=int(input("请输入整数:"))b=0 #用于统计循环的个数for a ...

  2. 教你两种python selenium保存图片的方法

    大家好,本篇文章主要讲的是python selenium保存图片最好的两种方法,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下 selenium爬取页面时经常遇到要保存图片的需求,通常的做法是 ...

  3. python统计次数正则_Python提取信息必学基础——正则表达式

    正则表达式并不是Python的一部分.正则表达式是用于处理字符串的强大工具,拥有自己独特的语法以及一个独立的处理引擎,效率上可能不如str自带的方法,但功能十分强大.得益于这一点,在提供了正则表达式的 ...

  4. 8种Python字符串拼接的方法,你知道几种?

    一.join函数 join 是 python 中字符串自带的一个方法,返回一个字符串.使用语法为: sep.join(可迭代对象) --> str # sep 分隔符 可以为空 将一个包含多个字 ...

  5. python递归详解_打破递归栈的深度限制: 解析一种Python尾递归优化的方法

    Python的递归调用栈的深度有限制, 可以通过sys.getrecursionlimit()查看. 尾递归在很多语言中都可以被编译器优化, 基本都是直接复用旧的执行栈, 不用再创建新的栈帧, 原理上 ...

  6. 520,送你四种Python画玫瑰的方法

    今天又是520

  7. Python 多进程异常处理的方法,你会吗

    最近项目用到了Python作为网站的前端,使用的框架是基于线程池的Cherrypy,但是前端依然有一些比较'重'的模块.由于python的多线程无法很好的利用多核的性质,所以觉得把这些比较'重'的功能 ...

  8. mysql一秒查询次数_单个select语句实现MySQL查询统计次数

    单个select语句实现MySQL查询统计次数 单个select语句实现MySQL查询统计次数的方法用处在哪里呢?用处太多了,比如一个成绩单,你要查询及格得人数与不及格的人数,怎么一次查询出来? My ...

  9. Python统计词频的几种方法

    本文介绍python统计词频的几种方法,供大家参考 目录 方法一:运用集合去重方法 方法二:运用字典统计 方法三:使用计数器 方法一:运用集合去重方法 def word_count1(words,n) ...

最新文章

  1. .ARM.exidx
  2. 两栏布局,三栏布局,等高布局,流式布局
  3. JavaScript操作大全整理(思维导图三--函数基础)
  4. Hollis原创|深入分析Java的编译原理
  5. [Vue.js] 模块化 -- 前端模块化
  6. uva11609(组合数学,快速幂)
  7. 提高网页效率的14条准则
  8. PHP去除所有的空格
  9. IO编程(对IO是什么的详解)
  10. 不可逆调速matlab,双闭环不可逆直流调速系统课程设计(matlab仿真设计)
  11. 聚类算法之DBSCAN
  12. win7连接打印机0x0000011b错误的解决办法
  13. 图像处理领域公认的重要英文期刊(SCI收录)
  14. RingBuffer
  15. 从.weights中提取权重数据
  16. unreal4特性介绍
  17. 文件不见还占用空间咋修复
  18. RVDS 3.1 下载地址及破解方法
  19. 计算机系统集成及运维,信息系统集成资质取消!ITSS或将取代其招投标地位!...
  20. 3. node.js 异步式I/O或非阻塞式I/O

热门文章

  1. mysql 优化语句
  2. python 之 collections
  3. 【产品环境】使用ELK搭建日志系统
  4. PHPExcel 常用方法
  5. 常见排序算法:希尔排序
  6. mysql拆分字符串后行转列_mysql行转列(拆分字符串场景)
  7. timestamp 转换 mysql_技术分享 | MySQL:timestamp 时区转换导致 CPU %sys 高的问题
  8. 【PP操作手册】运行MRP产生计划订单
  9. 【BOM is recursion】BOM 是递归的
  10. ABAP表抛FTP通用程序