Python ตัวนับในคอลเลกชันพร้อมตัวอย่าง

ความหมายของ Python เคาน์เตอร์?

Python ตัวนับคือคอนเทนเนอร์ที่จะเก็บจำนวนองค์ประกอบแต่ละรายการที่มีอยู่ในคอนเทนเนอร์ ตัวนับเป็นคลาสย่อยที่มีอยู่ในคลาสพจนานุกรม

ตัวนับเป็นคลาสย่อยที่มีอยู่ในคลาสพจนานุกรม การใช้ Python เครื่องมือตัวนับ คุณสามารถนับคู่คีย์-ค่าในออบเจ็กต์ หรือที่เรียกว่าออบเจ็กต์ตารางแฮช

ทำไมต้องใช้ Python เคาน์เตอร์?

นี่คือเหตุผลสำคัญในการใช้ Python 3 เคาน์เตอร์:

  • ตัวนับจะเก็บข้อมูลไว้ในคอลเลกชันที่ไม่เรียงลำดับ เช่นเดียวกับวัตถุที่สามารถแฮชได้ องค์ประกอบที่นี่แสดงถึงคีย์และนับเป็นค่า
  • ช่วยให้คุณสามารถนับรายการในรายการที่ทำซ้ำได้
  • การดำเนินการทางคณิตศาสตร์ เช่น การบวก การลบ การตัด และการรวม สามารถดำเนินการได้อย่างง่ายดายบนเคาน์เตอร์
  • ตัวนับยังสามารถนับองค์ประกอบจากตัวนับอื่นได้

รู้เบื้องต้นเกี่ยวกับ Python ตอบโต้

Python ตัวนับจะรับอินพุตรายการ ทูเพิล พจนานุกรม สตริง ซึ่งเป็นอ็อบเจ็กต์ที่สามารถทำซ้ำได้ทั้งหมด และมันจะให้เอาต์พุตที่มีการนับจำนวนของแต่ละองค์ประกอบ

ไวยากรณ์:

Counter(list)

พิจารณาว่าคุณมีรายการต่อไปนี้:

list1 = ['x','y','z','x','x','x','y', 'z']

รายการมีองค์ประกอบ x , y และ z เมื่อคุณใช้ Counter ในรายการนี้ มันจะนับจำนวน x , y และ z ที่ปรากฏ ผลลัพธ์หากใช้ตัวนับบน list1 ควรมีลักษณะดังนี้:

Counter({'x': 4, 'y': 2, 'z': 2})

เราก็เลยนับ x เป็น 4, y เป็น 2 และ z เป็น 2

เพื่อที่จะใช้ Counter เราจำเป็นต้องนำเข้ามันก่อน ดังแสดงในตัวอย่างด้านล่าง:

from collections import Counter

นี่คือตัวอย่างง่ายๆ ที่แสดงการทำงานของโมดูลตัวนับ

from collections import Counter
list1 = ['x','y','z','x','x','x','y', 'z']
print(Counter(list1))

Output:

Counter({'x': 4, 'y': 2, 'z': 2})

เคาน์เตอร์ด้วยสตริง

In Pythonทุกอย่างเป็นวัตถุและสตริงก็เป็นวัตถุเช่นกัน Python เชือก สามารถสร้างได้ง่ายๆ เพียงใส่ตัวอักษรไว้ในเครื่องหมายคำพูดคู่ Python ไม่รองรับประเภทอักขระ สิ่งเหล่านี้ถือเป็นสตริงที่มีความยาวหนึ่งอันและถือเป็นสตริงย่อยด้วย

ในตัวอย่างด้านล่าง สตริงจะถูกส่งผ่านไปยังตัวนับ โดยส่งคืนรูปแบบพจนานุกรม โดยมีคู่คีย์/ค่าโดยที่คีย์คือองค์ประกอบ และค่าคือการนับ นอกจากนี้ยังพิจารณาพื้นที่เป็นองค์ประกอบและให้จำนวนช่องว่างในสตริง

ตัวอย่าง:

from collections import Counter
my_str = "Welcome to Guru99 Tutorials!"
print(Counter(my_str))

Output:

Counter({'o': 3, ' ': 3, 'u': 3, 'e': 2, 'l': 2, 't': 2, 'r': 2, '9': 2, 'W': 1,
 'c': 1, 'm': 1, 'G': 1, 'T': 1, 'i': 1, 'a': 1, 's': 1, '!': 1})

เคาน์เตอร์พร้อมรายการ

รายการคือวัตถุที่สามารถวนซ้ำได้ซึ่งมีองค์ประกอบอยู่ภายในวงเล็บเหลี่ยม

องค์ประกอบในรายการเมื่อมอบให้กับ Counter จะถูกแปลงเป็นวัตถุ hashtable โดยที่องค์ประกอบจะกลายเป็นคีย์ และค่าจะเป็นจำนวนองค์ประกอบจากรายการที่กำหนด

ตัวอย่างเช่น ['x','y','z','x','x','x','y','z'] เมื่อคุณให้ Counter แก่รายการแล้ว มันจะนับจำนวนองค์ประกอบแต่ละรายการในรายการ

from collections import Counter
list1 = ['x','y','z','x','x','x','y','z']
print(Counter(list1))

Output:

Counter({'x': 4, 'y': 2, 'z': 2})

เคาน์เตอร์พร้อมพจนานุกรม

พจนานุกรมมีองค์ประกอบเป็นคู่คีย์/ค่า และเขียนไว้ภายในวงเล็บปีกกา

เมื่อมอบพจนานุกรมให้กับ Counter แล้ว มันจะถูกแปลงเป็นวัตถุแบบแฮชได้ โดยที่องค์ประกอบต่างๆ จะกลายเป็นกุญแจ และค่าต่างๆ จะเป็นจำนวนองค์ประกอบจากพจนานุกรมที่กำหนด

ตัวอย่างเช่น : {'x': 4, 'y': 2, 'z': 2, 'z': 2} ฟังก์ชันตัวนับจะพยายามค้นหาจำนวนของแต่ละคีย์ในพจนานุกรมที่กำหนด

from collections import Counter
dict1 =  {'x': 4, 'y': 2, 'z': 2, 'z': 2}
print(Counter(dict1))

Output:

Counter({'x': 4, 'y': 2, 'z': 2})

เคาน์เตอร์กับทูเพิล

ทูเพิลคือกลุ่มของวัตถุที่คั่นด้วยเครื่องหมายจุลภาคภายในวงเล็บกลม ตัวนับจะแจ้งจำนวนของแต่ละองค์ประกอบในทูเพิลที่กำหนด

เมื่อมอบทูเปิลให้กับ Counter แล้ว มันจะถูกแปลงเป็นวัตถุแฮชได้ โดยที่องค์ประกอบต่างๆ จะกลายเป็นคีย์ และค่าต่างๆ จะเป็นจำนวนองค์ประกอบจากทูเพิลที่กำหนด

from collections import Counter
tuple1 = ('x','y','z','x','x','x','y','z')
print(Counter(tuple1))

Output:

Counter({'x': 4, 'y': 2, 'z': 2})

การเข้าถึง การเริ่มต้น และการอัปเดตตัวนับ

กำลังเริ่มต้นตัวนับ

ตัวนับสามารถเริ่มต้นได้โดยการส่งค่าสตริง รายการ พจนานุกรม หรือทูเพิล ดังที่แสดงด้านล่าง:

from collections import Counter
print(Counter("Welcome to Guru99 Tutorials!"))   #using string
print(Counter(['x','y','z','x','x','x','y', 'z'])) #using list
print(Counter({'x': 4, 'y': 2, 'z': 2})) #using dictionary
print(Counter(('x','y','z','x','x','x','y', 'z'))) #using tuple

คุณยังสามารถเริ่มต้นตัวนับว่างๆ ดังที่แสดงด้านล่าง:

from collections import Counter
_count = Counter()

กำลังอัพเดตเคาน์เตอร์

คุณสามารถเพิ่มค่าให้กับ Counter ได้โดยใช้เมธอด update()

_count.update('Welcome to Guru99 Tutorials!')

รหัสสุดท้ายคือ:

from collections import Counter
_count = Counter()
_count.update('Welcome to Guru99 Tutorials!')
print(_count)

ผลลัพธ์คือ:

Counter({'o': 3, ' ': 3, 'u': 3, 'e': 2, 'l': 2, 't': 2, 'r': 2, '9': 2, 'W': 1,
 'c': 1, 'm': 1, 'G': 1, 'T': 1, 'i': 1, 'a': 1, 's': 1, '!': 1})

การเข้าถึงเคาน์เตอร์

หากต้องการรับค่าจากตัวนับ คุณสามารถดำเนินการดังต่อไปนี้:

from collections import Counter

_count = Counter()
_count.update('Welcome to Guru99 Tutorials!')
print('%s : %d' % ('u', _count['u']))
print('\n')
for char in 'Guru':
    print('%s : %d' % (char, _count[char]))

Output:

u : 3

G : 1
u : 3
r : 2
u : 3

การลบองค์ประกอบออกจากตัวนับ

หากต้องการลบองค์ประกอบออกจาก Counter คุณสามารถใช้ del ดังแสดงในตัวอย่างด้านล่าง:

ตัวอย่าง:

from collections import Counter
dict1 =  {'x': 4, 'y': 2, 'z': 2}
del dict1["x"]
print(Counter(dict1))

Output:

Counter({'y': 2, 'z': 2})

การดำเนินการเลขคณิตบน Python ตอบโต้

การดำเนินการทางคณิตศาสตร์ เช่น การบวก การลบ การตัด และการรวม สามารถทำได้บนเคาน์เตอร์ ดังแสดงในตัวอย่างด้านล่าง:

ตัวอย่าง:

from collections import Counter
counter1 =  Counter({'x': 4, 'y': 2, 'z': -2})

counter2 = Counter({'x1': -12, 'y': 5, 'z':4 })

#Addition
counter3 = counter1 + counter2 # only the values that are positive will be returned.

print(counter3)

#Subtraction
counter4 = counter1 - counter2 # all -ve numbers are excluded.For example z will be z = -2-4=-6, since it is -ve value it is not shown in the output

print(counter4)

#Intersection
counter5 = counter1 & counter2 # it will give all common positive minimum values from counter1 and counter2

print(counter5)

#Union
counter6 = counter1 | counter2 # it will give positive max values from counter1 and counter2

print(counter6)

Output:

Counter({'y': 7, 'x': 4, 'z': 2})
Counter({'x1': 12, 'x': 4})
Counter({'y': 2})
Counter({'y': 5, 'x': 4, 'z': 4})

วิธีการที่มีอยู่ใน Python ตอบโต้

มีวิธีการสำคัญบางอย่างที่ใช้ได้กับ Counter นี่คือรายการเดียวกัน:

  • องค์ประกอบ() : วิธีนี้จะส่งคืนองค์ประกอบทั้งหมดให้คุณนับ >0 องค์ประกอบที่มีการนับ 0 หรือ -1 จะไม่ถูกส่งกลับ
  • most_common(มูลค่า): วิธีนี้จะคืนองค์ประกอบที่พบบ่อยที่สุดจากรายการตัวนับ
  • ลบ(): วิธีการนี้ใช้ในการหักองค์ประกอบออกจากตัวนับอื่น
  • อัปเดต(): วิธีการนี้ใช้ในการอัพเดตองค์ประกอบจากตัวนับอื่น

ตัวอย่าง : องค์ประกอบ()

from collections import Counter
counter1 =  Counter({'x': 5, 'y': 2, 'z': -2, 'x1':0})

_elements = counter1.elements() # will give you all elements with positive value and count>0
for a in _elements:
    print(a)

Output:

x
x
x
x
x
y
y

ตัวอย่าง: most_common(ค่า)

from collections import Counter
counter1 =  Counter({'x': 5, 'y': 12, 'z': -2, 'x1':0})

common_element = counter1.most_common(2) # The dictionary will be sorted as per the most common element first followed by next.
print(common_element)

common_element1 = counter1.most_common() # if the value is not given to most_common , it will sort the dictionary and give the most common elements from the start.The last element will be the least common element.
print(common_element1)

Output:

 [('y', 12), ('x', 5)]
[('y', 12), ('x', 5), ('x1', 0), ('z', -2)]

ตัวอย่าง: ลบ()

from collections import Counter
counter1 =  Counter({'x': 5, 'y': 12, 'z': -2, 'x1':0})
counter2 = Counter({'x': 2, 'y':5})

counter1.subtract(counter2)
print(counter1)

Output:

Counter({'y': 7, 'x': 3, 'x1': 0, 'z': -2})

ตัวอย่าง: อัปเดต()

from collections import Counter
counter1 =  Counter({'x': 5, 'y': 12, 'z': -2, 'x1':0})
counter2 = Counter({'x': 2, 'y':5})
counter1.update(counter2)
print(counter1)

Output:

Counter({'y': 17, 'x': 7, 'x1': 0, 'z': -2})

การมอบหมายใหม่นับเข้า Python

คุณสามารถกำหนดจำนวน Counter ใหม่ได้ดังที่แสดงด้านล่าง:

พิจารณาว่าคุณมีพจนานุกรมเป็น : {'x': 5, 'y': 12, 'z': -2, 'x1':0}

คุณสามารถเปลี่ยนจำนวนองค์ประกอบดังที่แสดงด้านล่าง:

from collections import Counter
counter1 =  Counter({'x': 5, 'y': 12, 'z': -2, 'x1':0})

counter1['y'] = 20

print(counter1)

Output: หลังจากดำเนินการแล้ว คุณจะเห็นว่าจำนวน y เปลี่ยนจาก 12 เป็น 20

Counter({'y': 20, 'x': 5, 'x1': 0, 'z': -2})

รับและตั้งค่าจำนวนองค์ประกอบโดยใช้ตัวนับ

หากต้องการนับจำนวนองค์ประกอบโดยใช้ Counter คุณสามารถดำเนินการดังนี้:

from collections import Counter
counter1 =  Counter({'x': 5, 'y': 12, 'z': -2, 'x1':0})
print(counter1['y']) # this will give you the count of element 'y'

Output:

12

หากต้องการกำหนดจำนวนองค์ประกอบ คุณสามารถทำได้ดังนี้:

from collections import Counter
counter1 =  Counter({'x': 5, 'y': 12, 'z': -2, 'x1':0})

print(counter1['y'])

counter1['y'] = 20
counter1['y1'] = 10

print(counter1)

Output:

12
Counter({'y': 20, 'y1': 10, 'x': 5, 'x1': 0, 'z': -2})

สรุป

  • ตัวนับคือคอนเทนเนอร์ที่จะเก็บจำนวนองค์ประกอบแต่ละรายการที่มีอยู่ในคอนเทนเนอร์
  • ตัวนับเป็นคลาสย่อยที่มีอยู่ในคลาสพจนานุกรม
  • การใช้ Python เครื่องมือตัวนับ คุณสามารถนับคู่คีย์-ค่าในออบเจ็กต์ หรือที่เรียกว่าออบเจ็กต์แฮชได้
  • ตัวนับจะเก็บข้อมูลไว้ในคอลเลกชันที่ไม่เรียงลำดับ เช่นเดียวกับวัตถุที่สามารถแฮชได้ องค์ประกอบที่นี่แสดงถึงคีย์และนับเป็นค่า
  • ช่วยให้คุณสามารถนับรายการในรายการที่ทำซ้ำได้
  • การดำเนินการทางคณิตศาสตร์ เช่น การบวก การลบ การตัด และการรวม สามารถดำเนินการได้อย่างง่ายดายบนเคาน์เตอร์
  • ตัวนับยังสามารถนับองค์ประกอบจากตัวนับอื่นได้
  • วิธีการที่สำคัญที่มีอยู่บนตัวนับคือ element() , most_common(value), subtract() และ update()
  • ตัวนับสามารถใช้กับสตริง รายการ พจนานุกรม และทูเพิลได้