前言
這篇我們要來研究 python counter 使用方法,
在解 leetcode 相關的題目的時候,
很常會有需要「計算數量」的時候,這時 counter() 就能發揮很大的功能。
說明
counter 屬於 dict 的子資料型態,是專門設計用來計數的,
我們將一個內容丟入 counter 中,
會回傳一個相當於 dict 的資料型態,
其中 key 代表的是「對應的元素」,而 value 代表的是「對應的數量」,
我們可以直接把內容丟入 counter,並得到結果。
注意
這邊要另外注意,因為這不算會預載入的 package,
我們使用上需要另外從 collections import Counter,
範例如下:
from collections import Counter
完整內容可參考官方文件:
新增項目 (counter add)
既然都宣告了一個 counter, 我們當然會想要新增物件, 並累積數量。
這時我們可以使用
my_counter = Counter()
my_counter[key] += 1
就是上面這樣使用的方式,
原來我們 dict 的用法就是結合 key, value
而 value 被換成計數器,現在我們只需要宣告 Counter 後,
在指定對應的 key (不需要特別初始化 key 為 0),直接 += 1 即可,就會是從 1 開始了!
應用
這邊先直接講我在 leetcode 的應用,
如果我們將題目的 list 丟入 counter()、counter 會快速幫我們完成統計的動作,
我們可以再根據回傳的 counter (相當於 dict 的資料型態),
進行後續的動作。
我自己應用的經驗 – 1
from collections import Counter
s = "leetcode"
print(Counter(s))
print(type(Counter(s)))
print(set(Counter(s)))
這邊的應用是,我想統計 “leetcode” 這個 string 裡面,
每個英文單字各有幾個,
我們可以看到丟入 Counter 後,我們快速的直接得到答案了!
而下方的取 set 是另外一種應用,我們可以快速知道「不重複的字母」有哪些。
結果
我的關鍵字
- counter add
Reference
更完整的 set 整理推薦以下連結,我這邊目前只寫到我自己需要用的部分XD: