【Python】計數器 Counter

小亮520cl發表於2017-10-19

在瞭解 Counter 之前,請大家思考一個問題,現在有包含多個詞彙的列表:

list1 = ['red','green','red','blue','green','red']

該如何去統計列表中各詞彙出現的次數?

如果再深入一些,如何統計一本小說中,作者所用詞彙出現的次數?

Python 裡提供了一個優雅簡潔的解決方案:Counter

  1. list1 = ['red','green','red','blue','green','red']
  2. print Counter(list1)

  3. Counter({'red': 3, 'green': 2, 'blue': 1})

關於 Counter ,在官方文件中可以找到如下描述:

A Counter is a dict subclass for counting hashable objects. It is an unordered collection where elements are stored as dictionary keys and their counts are stored as dictionary values. Counts are allowed to be any integer value including zero or negative counts.

Counter 是 dict 的子類,是用於計數。它是一個無序的集合,其中元素儲存為字典鍵,其計數儲存為字典值。計數允許為包括零或負計數的任何整數值。

在 Python Shell 裡演示一下。初始化一個 Counter 物件的幾種方法:

初始化可迭代物件

>>> from collections import Counter >>> Counter('adffdsads')
Counter({'d': 3, 'f': 2, 's': 2, 'a': 2})

初始化對映物件

>>> Counter({'red':1,'green':2})
Counter({'green': 2, 'red': 1})

初始化關鍵字引數物件

>>> Counter(cats=4,dogs=8)
Counter({'dogs': 8, 'cats': 4})

Counter 是 dict 的子類,所以你可以放心地像 dict 一樣來使用它。具體可參考 【Python 第37課】 字典

下面看個 Counter 的常用方法:

most_common(n)

返回一個列表,包含 n 個最常見的元素已經他們的計數,如果 n 為空,則返回所有元素。

>>> c = Counter('adffdsads') >>> c.most_common(3)
[('d', 3), ('a', 2), ('f', 2)]

透過此方法,你就可以很方便地找出頻率最高的元素,省去了計數和排序的麻煩。

關於 Counter  就介紹到這裡。好記性不如爛筆頭,趕緊拿每期 每週一坑 裡的題目來練練手吧。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29096438/viewspace-2146149/,如需轉載,請註明出處,否則將追究法律責任。

相關文章