5种Python统计次数的方法
一、使用字典 dict 統(tǒng)計(jì)
循環(huán)遍歷出一個(gè)可迭代對(duì)象的元素,如果字典中沒有該元素,那么就讓該元素作為字典的鍵,并將該鍵賦值為1,如果存在則將該元素對(duì)應(yīng)的值加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 統(tǒng)計(jì)
defaultdict(parameter) 接受一個(gè)類型參數(shù),例如:int、float、str 等。
傳遞進(jìn)來的類型參數(shù),不是用來約束值的類型,更不是約束鍵的類型,而是當(dāng)鍵不存在時(shí),實(shí)現(xiàn)一種值的初始化。
- defaultdict(int) – 初始化為0
- defaultdict(float) – 初始化為0.0
- defaultdict(str) – 初始化為’’
三、List count方法
count() 方法用于統(tǒng)計(jì)某個(gè)元素在列表中出現(xiàn)的次數(shù)。
使用語法
# 使用語法 list.count(obj) # 返回次數(shù)統(tǒng)計(jì)單個(gè)對(duì)象次數(shù)
# 統(tǒng)計(jì)單個(gè)對(duì)象次數(shù) 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統(tǒng)計(jì)List中每一個(gè)對(duì)象次數(shù)
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)統(tǒng)計(jì)
先用 set 去重,然后循環(huán)把每一個(gè)元素和對(duì)應(yīng)的次數(shù) list.count(item) 組成元組。
''' 學(xué)習(xí)中遇到問題沒人解答?小編創(chuàng)建了一個(gè)Python學(xué)習(xí)交流QQ群:531509025 尋找有志同道合的小伙伴,互幫互助,群里還有不錯(cuò)的視頻學(xué)習(xí)教程和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 是一個(gè)容器對(duì)象,使用 collections 模塊中的 Counter 類可以實(shí)現(xiàn) hash 對(duì)象的統(tǒng)計(jì)。
Counter 是一個(gè)無序的容器類型,以字典的鍵值對(duì)形式存儲(chǔ),其中元素作為 key,其計(jì)數(shù)作為 value。
計(jì)數(shù)值可以是任意的 Interger(包括0和負(fù)數(shù))。
Counter() 對(duì)象還有幾個(gè)可調(diào)用的方法:
- most_common(n) – TOP n 個(gè)出現(xiàn)頻率最高的元素
- elements – 獲取所有的鍵 通過list轉(zhuǎn)化
- update – 增加對(duì)象
- subtrct – 刪除對(duì)象
- 下標(biāo)訪問 a[‘xx’] --不存在時(shí)返回0
直接顯示各個(gè)元素頻次
print(c) # Counter({'l': 3, 'o': 2, 'h': 1, 'e': 1, 'w': 1, 'r': 1, 'd': 1})使用 most_common顯示最多的n個(gè)元素
當(dāng)多個(gè)元素計(jì)數(shù)值相同時(shí),排列是無確定順序的。
print(c.most_common(3)) # [('l', 3), ('o', 2), ('h', 1)]使用數(shù)組下標(biāo)獲取,類似字典方式
print("The number of 'o':", c['o']) # The number of 'o': 2統(tǒng)計(jì)列表(只要列表中對(duì)象都是可以哈希的)
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) # 轉(zhuǎn)換為字典 print(dictc) # {1: 2, 2: 1, 3: 2, 4: 2, 5: 2, 6: 1, 7: 1, 8: 4}如果列表中有 unhashalbe 對(duì)象,例如:可變的列表,是無法統(tǒng)計(jì)的。
元組也可以統(tǒng)計(jì)。
c = collections.Counter([[1,2], "hello", 123, 0.52]) # TypeError: unhashable type: 'list'得到 Counter 計(jì)數(shù)器對(duì)象之后,還可以在此基礎(chǔ)上進(jìn)行增量更新。
elements() – 返回迭代器
元素排列無確定順序,個(gè)數(shù)小于1的元素不被包含。
''' 學(xué)習(xí)中遇到問題沒人解答?小編創(chuàng)建了一個(gè)Python學(xué)習(xí)交流QQ群:531509025 尋找有志同道合的小伙伴,互幫互助,群里還有不錯(cuò)的視頻學(xué)習(xí)教程和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函數(shù) – 減去元素
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函數(shù) – 增加元素
在進(jìn)行增量計(jì)數(shù)時(shí)候,update函數(shù)非常有用。
''' 學(xué)習(xí)中遇到問題沒人解答?小編創(chuàng)建了一個(gè)Python學(xué)習(xí)交流QQ群:531509025 尋找有志同道合的小伙伴,互幫互助,群里還有不錯(cuò)的視頻學(xué)習(xí)教程和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函數(shù) – 刪除鍵
當(dāng)計(jì)數(shù)值為0時(shí),并不意味著元素被刪除,刪除元素應(yīng)當(dāng)使用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})結(jié)尾給大家推薦一個(gè)非常好的學(xué)習(xí)教程,希望對(duì)你學(xué)習(xí)Python有幫助!
Python基礎(chǔ)入門教程推薦:更多Python視頻教程-關(guān)注B站:Python學(xué)習(xí)者
【Python教程】全網(wǎng)最容易聽懂的1000集python系統(tǒng)學(xué)習(xí)教程(答疑在最后四期,滿滿干貨)
Python爬蟲案例教程推薦:更多Python視頻教程-關(guān)注B站:Python學(xué)習(xí)者
2021年P(guān)ython最新最全100個(gè)爬蟲完整案例教程,數(shù)據(jù)分析,數(shù)據(jù)可視化,記得收藏哦
總結(jié)
以上是生活随笔為你收集整理的5种Python统计次数的方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python函数中apply、map、a
- 下一篇: 8种Python字符串拼接的方法,你知道