Sử dụng từ điển để đếm các phần tử trong chuỗi

Sau đây sẽ là một số cách để bạn có thể đếm số lượng phần tử trong một chuỗi sử dụng từ điển.
Cách 1: Sử dụng dict thông thường
Sử dụng dict thông thường để tạo một từ điển với mục tiêu đếm số lượng từng giá trị trong chuỗi.
- Lặp qua các phần tử của chuỗi.
- Nếu phần tử này tồn tại trong từ điển thì tăng giá trị của key này lên 1
- Nếu phần tử này chưa tồn tại trong từ điển - tạo giá trị cho key này bằng 1.
def approach1(x): counter = dict() for item in x: # Nếu phần tử này tồn tại trong từ điển thì tăng giá trị của key này lên 1 if item in counter: counter[item] += 1 # Nếu phần tử này chưa tồn tại trong từ điển - tạo giá trị cho key này bằng 1 else: counter[item] = 1 return counter
Chạy thử code
x = 'abaabd' result = approach1(x) print('Kết quả: {}'.format(result))
Kết quả in ra:
Kết quả: {'a': 3, 'b': 2, 'd': 1}
Cách 2 - Sử dụng defaultdict
Để đơn giản quá trình kiểm tra key có tồn tại trong dictionary, Python cung cấp một hàm defaultdict cho phép chúng ta đếm key mà không cần kiểm tra key đó có tồn tại hay không.
Mặc định khi khởi tạo, key bất kỳ sẽ có giá trị 0.
import collections def apporach2(x): counter = collections.defaultdict(int) # đầu vào của defaultdict có thể là int, list,... for item in x: counter[item] += 1 return counter
Chạy thử code
x = 'abaabd' result = approach2(x) print('Kết quả: {}'.format(result))
Kết quả in ra:
Kết quả: defaultdict(<class 'int'>, {'a': 3, 'b': 2, 'd': 1})
Cách 3 - Sử dụng counter
Gói gọn toàn bộ việc đếm như trên mà không dùng vòng for - đây là một trong những hàm rất tiện mà thường được dùng thường xuyên ngay cả trong lập trình AI. Ví dụ bạn muốn xây dựng bộ từ điển cho NLP thì hàm này sẽ được sử dụng.
import collections def approach3(x): counter = collections.Counter(x) return counter
Chạy thử code
x = 'abaabd' result = approach3(x) print('Kết quả: {}'.format(result))
Kết quả in ra:
Kết quả: Counter({'a': 3, 'b': 2, 'd': 1})