日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

collections.Counter 用法

發布時間:2023/12/18 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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 args

Counter對象具有一個字典接口,當訪問不存在的值時,它為缺失項返回0計數,而字典會引發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()主要用于與正整數一起表示運行計數。但是,請注意不要不必要地排除需要其他類型或負值的用例。為了幫助解決這些用例,本節介紹了最小范圍和類型限制。

  • Counter類本身是一個字典子類,對其鍵和值沒有限制。這些值旨在為代表計數的數字,但是您可以在值字段中存儲任何內容。
  • most_common()方法僅要求值是可排序的。 對于原地操作,例如c [key] + = 1,值類型僅需要支持加法和減法。因此,分數、浮點數和小數將起作用,并且支持負值。update()和subtract()也是如此,它們允許輸入和輸出均為負值和零值。
  • 多重集方法僅設計用于具有正值的用例。輸入可以為負或零,但僅創建具有正值的輸出。沒有類型限制,但是值類型需要支持加,減和比較。
  • elements()方法需要整數計數。它忽略零和負計數。

總結

以上是生活随笔為你收集整理的collections.Counter 用法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。