Python统计次数方法技巧有哪些
本篇内容介绍了"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] += 1 else: count_dist[i] = 1print(count_dist)# {'a': 2, 'b': 1, 1: 2, 2: 1, 3: 1}
二、使用 collections.defaultdict 统计
defaultdict(parameter)
接受一个类型参数,例如:int、float、str 等。
传递进来的类型参数,不是用来约束值的类型,更不是约束键的类型,而是当键不存在时,实现一种值的初始化。
defaultdict(int) -- 初始化为0defaultdict(float) -- 初始化为0.0defaultdict(str) -- 初始化为''from collections import defaultdictlists = ['a','a','b',1,2,3,1]count_dict = defaultdict(int)for i in lists: count_dict[i] += 1print(count_dict)# defaultdict(, {'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"))# 4print(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)}")'''41['aaa', 'bbb', 'ccc', 'ddd', 'eee']aaa:4bbb:1ccc:2ddd:3eee:1'''
四、使用集合(set)和列表(list)统计
先用 set
去重,然后循环把每一个元素和对应的次数 list.count(item)
组成元组。
'''学习中遇到问题没人解答?小编创建了一个Python学习交流群: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 collectionsc = 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 collectionsx = [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学习交流群:531509025寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!'''import collectionsc = 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 collectionsc = 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学习交流群:531509025寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!'''import collectionsc = 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 collectionsc = collections.Counter('helloworld')print(c)# Counter({'l': 3, 'o': 2, 'h': 1, 'e': 1, 'w': 1, 'r': 1, 'd': 1})c["d"] = 0print(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统计次数方法技巧有哪些"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!