python counter函数_Python中的魔法函数——Counter
Python的標(biāo)準(zhǔn)庫collections中有很多魔法函數(shù),可以使平時(shí)的數(shù)據(jù)處理非常高效,今天介紹一個(gè)很好用的計(jì)數(shù)函數(shù)——Counter。
Counter函數(shù)的功能主要是計(jì)數(shù)器,特別是在對源數(shù)據(jù)是字典類型的數(shù)據(jù)進(jìn)行計(jì)數(shù)時(shí),如果不想寫冗長繁瑣的for循環(huán),那么使用Counter函數(shù)將是一個(gè)不錯(cuò)的選擇。
這里以一個(gè)簡單的計(jì)數(shù)場景來演示,假設(shè)我們有一組以顏色名稱和顏色數(shù)量為鍵值對的字典對象,我們需要對同一種顏色進(jìn)行累計(jì)計(jì)數(shù)(字典中可能有多組同一顏色的鍵值對),看起來似乎只能使用笨笨的循環(huán)來進(jìn)行操作了。
colors = [{'red':4},{'blue':5},{'red':8},{'green':7},{'blue':8},{'blue':10},{'green':12}]
方法一——使用比較傳統(tǒng)的循環(huán)方法:
result?=?{}for?i?in?colors:if?list(i.keys())[0]?not?in?result:result[list(i.keys())[0]]?=?list(i.values())[0]else:result[list(i.keys())[0]]?+=?list(i.values())[0]{'red': 12, 'blue': 23, 'green': 19}
如果這里使用collections標(biāo)準(zhǔn)庫中的Counter函數(shù),則整個(gè)過程會(huì)無比簡單:
方法二——Counter函數(shù):
from collections import Counterc?=?Counter()for?i?in?colors:c[list(i.keys())[0]]?+=?list(i.values())[0]Counter({'blue': 23, 'green': 19, 'red': 12})
這里Counter容器實(shí)現(xiàn)了一個(gè)自動(dòng)化的計(jì)數(shù)器,當(dāng)Counter中不存在某個(gè)鍵時(shí),賦值操作會(huì)自動(dòng)創(chuàng)建一個(gè)新的鍵,而不是像方法一中那樣需要手動(dòng)去判斷某個(gè)鍵是否已經(jīng)存在在字典里面。
除此之外,Counter神奇的地方在于它有很多可以簡單調(diào)用的統(tǒng)計(jì)方法,比如我們想要獲取結(jié)果中正序/倒序的TOPN記錄,則可以直接這樣寫:
c.most_common(2)[('blue', 23), ('green', 19)]
當(dāng)對數(shù)量巨大、且重復(fù)記錄多的字典對象進(jìn)行匯總計(jì)數(shù)操作時(shí),Counter函數(shù)能夠非常方便、高效的勝任此項(xiàng)工作。
總結(jié)
以上是生活随笔為你收集整理的python counter函数_Python中的魔法函数——Counter的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Google SketchUp SKP文
- 下一篇: python编程代码-几个Python小