Python Bộ đếm trong bộ sưu tập có ví dụ

Là gì Python Quầy tính tiền?

Python Bộ đếm là một vùng chứa sẽ chứa số lượng của từng phần tử có trong vùng chứa. Bộ đếm là một lớp con có sẵn bên trong lớp từ điển.

Bộ đếm là một lớp con có sẵn bên trong lớp từ điển. Sử dụng Python Công cụ truy cập, bạn có thể đếm các cặp khóa-giá trị trong một đối tượng, còn được gọi là đối tượng bảng băm.

Tại sao sử dụng Python Quầy tính tiền?

Dưới đây là những lý do chính để sử dụng Python 3 Bộ đếm:

  • Bộ đếm giữ dữ liệu trong một bộ sưu tập không có thứ tự, giống như các đối tượng có thể băm. Các phần tử ở đây đại diện cho các khóa và số đếm dưới dạng giá trị.
  • Nó cho phép bạn đếm các mục trong một danh sách lặp lại.
  • Các phép tính số học như cộng, trừ, giao và hợp có thể được thực hiện dễ dàng trên Bộ đếm.
  • Bộ đếm cũng có thể đếm các phần tử từ bộ đếm khác

Giới thiệu về Python Counter

Python Bộ đếm nhận đầu vào một danh sách, bộ dữ liệu, từ điển, chuỗi, tất cả đều là các đối tượng có thể lặp lại và nó sẽ cung cấp cho bạn đầu ra có số lượng của từng phần tử.

Cú pháp:

Counter(list)

Giả sử bạn có danh sách sau:

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

Danh sách có các phần tử x , y và z. Khi bạn sử dụng Counter trong danh sách này, nó sẽ đếm xem x , y và z có mặt bao nhiêu lần. Đầu ra nếu bộ đếm được sử dụng trên list1 sẽ giống như sau:

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

Vì vậy, chúng ta có số x là 4, y là 2 và z là 2.

Để sử dụng Counter, trước tiên chúng ta cần nhập nó như trong ví dụ dưới đây:

from collections import Counter

Đây là một ví dụ đơn giản cho thấy hoạt động của mô-đun Counter.

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

Đầu ra:

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

Bộ đếm bằng chuỗi

In Python, mọi thứ đều là một đối tượng và chuỗi cũng là một đối tượng. Python chuỗi có thể được tạo ra đơn giản bằng cách đặt các ký tự trong dấu ngoặc kép. Python không hỗ trợ một loại ký tự. Chúng được coi là chuỗi có độ dài bằng một, cũng được coi là chuỗi con.

Trong ví dụ bên dưới, một chuỗi được truyền tới Counter. Nó trả về định dạng từ điển, với cặp khóa/giá trị trong đó khóa là phần tử và giá trị là số đếm. Nó cũng coi khoảng trắng là một phần tử và đưa ra số lượng khoảng trắng trong chuỗi.

Ví dụ:

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

Đầu ra:

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})

Bộ đếm có danh sách

Danh sách là một đối tượng có thể lặp lại có các phần tử nằm trong dấu ngoặc vuông.

Các phần tử trong danh sách khi được đưa vào Bộ đếm sẽ được chuyển đổi thành các đối tượng có thể băm trong đó các phần tử sẽ trở thành khóa và các giá trị sẽ là số phần tử từ danh sách đã cho.

Ví dụ: ['x','y','z','x','x','x','y','z']. Sau khi bạn cung cấp Bộ đếm cho danh sách, nó sẽ cung cấp cho bạn số lượng từng phần tử trong danh sách.

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

Đầu ra:

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

Bộ đếm bằng từ điển

Một từ điển có các phần tử theo cặp khóa/giá trị và được viết bên trong dấu ngoặc nhọn.

Sau khi từ điển được đưa cho Bộ đếm, nó sẽ được chuyển đổi thành đối tượng có thể băm trong đó các phần tử sẽ trở thành khóa và các giá trị sẽ là số phần tử từ từ điển đã cho.

Ví dụ: {'x': 4, 'y': 2, 'z': 2, 'z': 2}. Hàm Counter sẽ cố gắng tìm số lượng của từng khóa trong từ điển đã cho.

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

Đầu ra:

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

Bộ đếm với Tuple

Tuple là một tập hợp các đối tượng được phân tách bằng dấu phẩy bên trong dấu ngoặc tròn. Counter sẽ cung cấp cho bạn số lượng của từng phần tử trong tuple đã cho.

Sau khi bộ dữ liệu được đưa cho Bộ đếm, nó sẽ được chuyển đổi thành một đối tượng có thể băm trong đó các phần tử sẽ trở thành khóa và các giá trị sẽ là số phần tử từ bộ dữ liệu đã cho.

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

Đầu ra:

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

Truy cập, khởi tạo và cập nhật bộ đếm

Bộ đếm khởi tạo

Bộ đếm có thể được khởi tạo bằng cách truyền giá trị chuỗi, danh sách, từ điển hoặc bộ dữ liệu như dưới đây:

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

Bạn cũng có thể khởi tạo Bộ đếm trống như dưới đây:

from collections import Counter
_count = Counter()

Cập nhật bộ đếm

Bạn có thể thêm giá trị vào Bộ đếm bằng cách sử dụng phương thức update().

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

Mã cuối cùng là:

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

Đầu ra là:

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})

Truy cập bộ đếm

Để lấy các giá trị từ Counter, bạn có thể làm như sau:

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]))

Đầu ra:

u : 3

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

Xóa một phần tử khỏi bộ đếm

Để xóa một phần tử khỏi Counter, bạn có thể sử dụng del , như trong ví dụ bên dưới:

Ví dụ:

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

Đầu ra:

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

Phép toán số học trên Python Counter

Các phép toán số học như cộng, trừ, giao và hợp có thể được thực hiện trên Bộ đếm như trong ví dụ bên dưới:

Ví dụ:

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)

Đầu ra:

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

Phương pháp có sẵn trên Python Counter

Có một số phương pháp quan trọng có sẵn với Counter, đây là danh sách tương tự:

  • phần tử() : Phương thức này sẽ trả về cho bạn tất cả các phần tử có số lượng >0. Các phần tử có số 0 hoặc -1 sẽ không được trả về.
  • nhất_common(giá trị): Phương pháp này sẽ trả về cho bạn các phần tử phổ biến nhất từ ​​danh sách Bộ đếm.
  • trừ(): Phương pháp này được sử dụng để khấu trừ các phần tử từ Bộ đếm khác.
  • cập nhật(): Phương pháp này được sử dụng để cập nhật các phần tử từ Bộ đếm khác.

Ví dụ: phần tử()

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)

Đầu ra:

x
x
x
x
x
y
y

Ví dụ: Most_common(value)

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)

Đầu ra:

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

Ví dụ: trừ()

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)

Đầu ra:

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

Ví dụ: cập nhật()

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)

Đầu ra:

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

Chỉ định lại số lượng trong Python

Bạn có thể gán lại số lượng Counter như hình dưới đây:

Giả sử bạn có một từ điển là : {'x': 5, 'y': 12, 'z': -2, 'x1':0}

Bạn có thể thay đổi số lượng phần tử như dưới đây:

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

counter1['y'] = 20

print(counter1)

Đầu ra: Sau khi thực hiện bạn sẽ thấy số y được thay đổi từ 12 thành 20

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

Nhận và đặt số lượng Phần tử bằng cách sử dụng Bộ đếm

Để lấy số đếm của một phần tử bằng Counter, bạn có thể làm như sau:

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'

Đầu ra:

12

Để đặt số lượng phần tử, bạn có thể làm như sau:

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)

Đầu ra:

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

Tổng kết

  • Bộ đếm là một vùng chứa sẽ chứa số lượng của từng phần tử có trong vùng chứa.
  • Counter là một lớp con có sẵn bên trong lớp từ điển.
  • Sử dụng Python Công cụ truy cập, bạn có thể đếm các cặp khóa-giá trị trong một đối tượng, còn được gọi là đối tượng có thể băm.
  • Bộ đếm giữ dữ liệu trong một bộ sưu tập không có thứ tự, giống như các đối tượng có thể băm. Các phần tử ở đây đại diện cho các khóa và số đếm dưới dạng giá trị.
  • Nó cho phép bạn đếm các mục trong một danh sách lặp lại.
  • Các phép tính số học như cộng, trừ, giao và hợp có thể được thực hiện dễ dàng trên Bộ đếm.
  • Bộ đếm cũng có thể đếm các phần tử từ bộ đếm khác.
  • Các phương thức quan trọng có sẵn trên Bộ đếm là Elements() , Most_common(value), Trừ() và Update().
  • Bộ đếm có thể được sử dụng trên một chuỗi, danh sách, từ điển và bộ dữ liệu.