Counter ตัวนับที่มีประโยชน์มาก ๆ เลยใน Python

December 22nd, 2020

ไม่ว่าจะเป็นการแข่งเขียนโปรแกรม หรือการทำงานข้อมูล เราก็มักจะเจอการนับจำนวนของข้อมูลที่ซ้ำกันอยู่บ่อย ๆ เช่น การนับว่าใน 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 ออกมาครับ