collections.Counter 用法
原文檔連接
文章目錄
- 簡介
- 方法
- 字典方法
- 特殊方法
- elements()
- most_common([n])
- subtract([iterable-or-mapping])
- 算術運算
- 注意
簡介
計數器是用于計數可哈希對象的dict子類。它是一個集合,其中元素存儲為字典鍵,其計數存儲為字典值。計數可以是任何整數值,包括零或負計數。
元素是從一個可迭代的對象計數或從另一個映射(或計數器)初始化的
c = Counter() # a new, empty counter c = Counter('gallahad') # a new counter from an iterable c = Counter({'red': 4, 'blue': 2}) # a new counter from a mapping c = Counter(cats=4, dogs=8) # a new counter from keyword argsCounter對象具有一個字典接口,當訪問不存在的值時,它為缺失項返回0計數,而字典會引發(fā)KeyError(因為訪問了字典中不存在的鍵):
c = Counter(['eggs', 'ham']) c['bacon'] # count of a missing element is zero將計數設置為零不會將元素從計數器中刪除。使用del將其完全刪除:
c['sausage'] = 0 # counter entry with a zero count del c['sausage'] # del actually removes the entry作為dict的子類,Counter繼承了記住插入順序的功能。對Counter對象的數學運算也保留順序。根據在左操作數中首先遇到元素的時間,然后按照在右操作數中遇到的順序,對結果進行排序。
方法
字典方法
常用的詞典方法可用于Counter對象,但有兩種方法對Counter的工作方式不同。
- fromkeys(iterable)
沒有為Counter對象實現此類方法。 - update([iterable-or-mapping])
元素是從可迭代的或從另一個映射(或計數器)添加的元素中計數的。像dict.update()一樣,但是添加計數而不是替換它們。同樣,可迭代對象應該是元素序列,而不是(key,value)對序列。(在某種層面上,可以理解為加法運算)
特殊方法
除了適用于所有詞典的方法外,Counter對象還支持三種方法:
elements()
在元素上返回一個迭代器,并重復與其計數相等的次數。元素按首先遇到的順序返回。如果一個元素的數量少于一個,elements()將忽略它。
c = Counter(a=4, b=2, c=0, d=-2) sorted(c.elements()) # 返回結果 # ['a', 'a', 'a', 'a', 'b', 'b']most_common([n])
返回n個最常見元素的列表及其從最常見到最小的計數。如果省略n或None,則most_common()返回計數器中的所有元素。具有相等計數的元素按首先遇到的順序排序:
Counter('abracadabra').most_common(3) # 結果 # [('a', 5), ('b', 2), ('r', 2)]subtract([iterable-or-mapping])
從可迭代對象或另一個映射(或計數器)中減去元素。像dict.update()一樣,但是減去計數而不是替換它們。輸入和輸出都可以為零或負。
c = Counter(a=4, b=2, c=0, d=-2) d = Counter(a=1, b=2, c=3, d=4) c.subtract(d) c # 結果 # Counter({'a': 3, 'b': 0, 'c': -3, 'd': -6})算術運算
下面四個算術運算結果只含有計數為正的項,否則就是一個空Counter()對象。subtract()和update()方法則沒有這些特質。
c = Counter(a=3, b=1) d = Counter(a=1, b=2) c + d # add two counters together: c[x] + d[x] # 結果:Counter({'a': 4, 'b': 3}) c - d # subtract (keeping only positive counts) # 結果:Counter({'a': 2}) c & d # intersection: min(c[x], d[x]) # 結果:Counter({'a': 1, 'b': 1}) c | d # union: max(c[x], d[x]) # 結果:Counter({'a': 3, 'b': 2})c = Counter(a=2, b=-4) +c # 結果: Counter({'a': 2}) -c # 結果: Counter({'b': 4})注意
Counter()主要用于與正整數一起表示運行計數。但是,請注意不要不必要地排除需要其他類型或負值的用例。為了幫助解決這些用例,本節(jié)介紹了最小范圍和類型限制。
- Counter類本身是一個字典子類,對其鍵和值沒有限制。這些值旨在為代表計數的數字,但是您可以在值字段中存儲任何內容。
- most_common()方法僅要求值是可排序的。 對于原地操作,例如c [key] + = 1,值類型僅需要支持加法和減法。因此,分數、浮點數和小數將起作用,并且支持負值。update()和subtract()也是如此,它們允許輸入和輸出均為負值和零值。
- 多重集方法僅設計用于具有正值的用例。輸入可以為負或零,但僅創(chuàng)建具有正值的輸出。沒有類型限制,但是值類型需要支持加,減和比較。
- elements()方法需要整數計數。它忽略零和負計數。
總結
以上是生活随笔為你收集整理的collections.Counter 用法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 初识C++——类与对象的详细说明(二)
- 下一篇: 华众 mysql_华众虚拟主机管理系统H