ไม่ว่าจะเป็นการแข่งเขียนโปรแกรม หรือการทำงานข้อมูล เราก็มักจะเจอการนับจำนวนของข้อมูลที่ซ้ำกันอยู่บ่อย ๆ เช่น การนับว่าใน list มีเลข 1 กี่ตัว ถ้านับง่าย ๆ ก็สามารถเขียนลุปการวนซ้ำได้เลย แต่ถ้าต้องทำหลาย ๆ รอบ Counter จะเหมาะสมกว่าครับ
ตัว Counter อยู่ในไลบรารี่ collections สามารถ import ได้แบบนี้เลยครับ
from collections import Counter
Counter รองรับการใช้งานกับ list, dictionary, string รวมถึง keywords arguement ด้วยครับ ตัวอย่างเช่น
c = Counter("abcabcabczza")
จะเป็น Counter สำหรับนับตัวอักษรใน string นะครับ วิธีการเรียกใช้ ก็เหมือนกับ dictionary ก็คือ ใช้วงเล็บก้ามปู []
แล้วใส่สิ่งที่ต้องการรู้จำนวนเข้าไปในวงเล็บ
c['z'] # 2
c['a'] # 4
c['m'] # 0
สิ่งที่แตกต่างจาก dictionary คือค่าจะเป็น 0 เมื่อเรียกตัวที่ไม่อยู่ใน Counter แต่ถ้า dictionary จะโยน KeyError ครับ
นอกจากการนับแล้วยังสามารถหาสิ่งที่มากที่สุดเรียงลำดับได้อีกด้วยครับ โดยใช้ c.most_common(n)
โดย n จะเป็นจำนวนสิ่งที่ต้องการ return ออกมาครับ