- Sản phẩm & Dịch vụSản phẩm & Dịch vụ
- Giải phápGiải pháp
- Bảng giáBảng giá
- Công tyCông ty
- Tài liệuTài liệu
vi
vi
Chuyên mục với các bài viết hướng dẫn, nghiên cứu và phân tích chi tiết về kỹ thuật, các xu hướng công nghệ mới nhất dành cho lập trình viên.
Technical Writer
I have over 5 years of experience writing technical documentation for tech products, making them accessible and user-friendly. My focus is always on providing clear and precise information. @#@ Tôi đã có hơn 5 năm kinh nghiệm viết tài liệu kỹ thuật cho các sản phẩm công nghệ, giúp người dùng dễ dàng tiếp cận và sử dụng. Tôi luôn tập trung vào việc cung cấp thông tin chính xác và dễ hiểu.
Thảo luận (0)
Đăng nhập để thảo luận
Lớp Python Counter là một phần của module Collections. Counter là một subclass của Dictionary và được sử dụng để theo dõi các phần tử cùng với số lần xuất hiện của chúng.

Counter là một bộ sưu tập không có thứ tự, trong đó các phần tử được lưu trữ dưới dạng key của dict và số lần xuất hiện của chúng là value. Số đếm của các phần tử trong Counter có thể là số nguyên dương, 0 hoặc âm. Tuy nhiên, không có giới hạn về key và value của nó. Mặc dù value có mục đích là các số, chúng ta cũng có thể lưu trữ các đối tượng khác.
Chúng ta có thể tạo một counter rỗng hoặc bắt đầu với một số giá trị ban đầu.
from collections import Counterempty Counter
counter = Counter() print(counter) # Counter()
Counter with initial values
counter = Counter(['a', 'a', 'b']) print(counter) # Counter({'a': 2, 'b': 1})
counter = Counter(a=2, b=3, c=1) print(counter) # Counter({'b': 3, 'a': 2, 'c': 1})
Chúng ta cũng có thể sử dụng bất kỳ Iterable (đối tượng lặp) nào làm đối số để tạo đối tượng Counter. Vì vậy, chuỗi ký tự và list cũng có thể được sử dụng để tạo đối tượng Counter.
# Iterable as argument for Counter
counter = Counter('abc')
print(counter) # Counter({'a': 1, 'b': 1, 'c': 1})
List as argument to Counter
words_list = ['Cat', 'Dog', 'Horse', 'Dog']
counter = Counter(words_list)
print(counter) # Counter({'Dog': 2, 'Cat': 1, 'Horse': 1})
Dictionary as argument to Counter
word_count_dict = {'Dog': 2, 'Cat': 1, 'Horse': 1}
counter = Counter(word_count_dict)
print(counter) # Counter({'Dog': 2, 'Cat': 1, 'Horse': 1})
Như đã đề cập ở trên, chúng ta có thể sử dụng dữ liệu không phải là số cho các giá trị đếm, nhưng điều đó sẽ làm sai mục đích của lớp counter.
# Counter works with non-numbers too
special_counter = Counter(name='Pankaj', age=20)
print(special_counter) # Counter({'name': 'Pankaj', 'age': 20})
Hãy cùng xem xét các phương thức của lớp counter và một số thao tác khác mà chúng ta có thể thực hiện trên đó.
# getting count
counter = Counter({'Dog': 2, 'Cat': 1, 'Horse': 1})
countDog = counter['Dog']
print(countDog) # 2
Nếu chúng ta cố gắng lấy số đếm của một key không tồn tại, nó sẽ trả về 0 chứ không báo lỗi KeyError.
# getting count for non existing key, don't cause KeyError print(counter['Unicorn']) # 0
Chúng ta cũng có thể đặt số đếm cho một phần tử hiện có trong counter. Nếu phần tử đó không tồn tại, nó sẽ được thêm vào counter.
counter = Counter({'Dog': 2, 'Cat': 1, 'Horse': 1})
# setting count
counter['Horse'] = 0
print(counter) # Counter({'Dog': 2, 'Cat': 1, 'Horse': 0})
setting count for non-existing key, adds to Counter
counter['Unicorn'] = 1
print(counter) # Counter({'Dog': 2, 'Cat': 1, 'Unicorn': 1, 'Horse': 0})
Chúng ta có thể sử dụng từ khóa del để xóa một phần tử khỏi đối tượng counter.
# Delete element from Counter
del counter['Unicorn']
print(counter) # Counter({'Dog': 2, 'Cat': 1, 'Horse': 0})
Phương thức này trả về danh sách các phần tử trong counter. Chỉ các phần tử có số đếm dương mới được trả về.
counter = Counter({'Dog': 2, 'Cat': -1, 'Horse': 0})
elements()
elements = counter.elements() # doesn't return elements with count 0 or less
for value in elements:
print(value)
Đoạn code trên sẽ in ra “Dog” hai lần vì số đếm của nó là 2. Các phần tử khác sẽ bị bỏ qua vì chúng không có số đếm dương. Counter là một bộ sưu tập không có thứ tự, vì vậy các phần tử được trả về theo bất kỳ thứ tự nào.
Phương thức này trả về các phần tử phổ biến nhất từ counter. Nếu chúng ta không cung cấp giá trị cho ‘n’, một từ điển đã được sắp xếp từ các phần tử phổ biến nhất đến ít phổ biến nhất sẽ được trả về. Chúng ta có thể sử dụng slicing (cắt lát) để lấy các phần tử ít phổ biến nhất trên từ điển đã sắp xếp này.
counter = Counter({'Dog': 2, 'Cat': -1, 'Horse': 0})
most_common()
most_common_element = counter.most_common(1)
print(most_common_element) # [('Dog', 2)]
least_common_element = counter.most_common()[:-2:-1]
print(least_common_element) # [('Cat', -1)]
Phương thức counter.subtract() được sử dụng để trừ số đếm của các phần tử từ một Counter khác. Phương thức update() được sử dụng để cộng thêm số đếm từ một Counter khác.
counter = Counter('ababab')
print(counter) # Counter({'a': 3, 'b': 3})
c = Counter('abc')
print(c) # Counter({'a': 1, 'b': 1, 'c': 1})
subtract
counter.subtract(c)
print(counter) # Counter({'a': 2, 'b': 2, 'c': -1})
update
counter.update(c)
print(counter) # Counter({'a': 3, 'b': 3, 'c': 0})
Chúng ta có thể thực hiện một số phép toán số học trên counter giống như các con số. Tuy nhiên, chỉ những phần tử có số đếm dương mới được trả về với các phép toán này.
# arithmetic operations c1 = Counter(a=2, b=0, c=-1) c2 = Counter(a=1, b=-1, c=2)c = c1 + c2 # return items having +ve count only print(c) # Counter({'a': 3, 'c': 1})
c = c1 - c2 # keeps only +ve count elements print(c) # Counter({'a': 1, 'b': 1})
c = c1 & c2 # intersection min(c1[x], c2[x]) print(c) # Counter({'a': 1})
c = c1 | c2 # union max(c1[x], c2[x]) print(c) # Counter({'a': 2, 'c': 2})
Hãy cùng xem một số đoạn mã cho các thao tác khác mà chúng ta có thể thực hiện trên các đối tượng counter.
counter = Counter({'a': 3, 'b': 3, 'c': 0})
# miscellaneous examples
print(sum(counter.values())) # 6
print(list(counter)) # ['a', 'b', 'c']
print(set(counter)) # {'a', 'b', 'c'}
print(dict(counter)) # {'a': 3, 'b': 3, 'c': 0}
print(counter.items()) # dict_items([('a', 3), ('b', 3), ('c', 0)])
remove 0 or negative count elements
counter = Counter(a=2, b=3, c=-1, d=0)
counter = +counter
print(counter) # Counter({'b': 3, 'a': 2})
clear all elements
counter.clear()
print(counter) # Counter()
Đó là tất cả về lớp Python Counter.
Bạn có thể tải xuống đoạn mã ví dụ đầy đủ từ GitHub Repository của tôi.
Tham khảo: Python Docs