Để chứng minh ứng dụng của từ điển trong thực tế. Giả sử, tôi có một chuỗi là “wellcom to lap trinh khong kho”.
Vậy bây giờ làm thế nào để đếm các kí tự hay đếm các từ xuất hiện trong chuỗi trên.
Đếm các kí tự xuất hiện trong chuỗi
Ý tưởng đầu
Ý tưởng đầu tiên mà mình nghĩ ra khi làm bài này là tạo một chuỗi chars gồm các kí tự trong bảng chữ cái, dùng vòng for để duyệt qua chuỗi cần đếm. Dùng hàm count()
mà mình đã nhắc tới trong các bài về list để đếm các kí tự xuất hiện.
chars = "abcdefghijklmnopqrstuvwxyz" check_string = "wellcom to lap trinh khong kho" for char in chars: count = check_string.count(char) if count > 1: print(char, count)
Nhưng nếu làm bằng cách trên thì sẽ phải duyệt chuỗi bằng số lần mà độ dài chuỗi cần xét có, Và bạn cũng không thể đếm được toàn bộ kí tự, vì lỡ như ở trong chuỗi cần duyệt có những kí tự đặc biệt như:#,$,%,^,&… mà ở trong chuỗi chars không có.
Có một cách khác mà chỉ cần duyệt qua một lần mà vẫn có thể đếm được số lần các kí tự đó xuất hiện.
Bằng cách tạo một dictionary, với cặp key:value
tương ứng là kí tự có trong chuỗi và số lần xuất hiện kí tự đó.
string = 'wellcom to lap trinh khong kho' count={} for i in string: if i in count: count[i] +=1 else: count[i] = 1 print(count) #retun {'w': 1, 'e': 1, 'l': 3, 'c': 1, 'o': 4, 'm': 1, # ' ': 5, 't': 2, 'a': 1, 'p': 1, 'r': 1, 'i': 1, 'n': 2, 'h': 3, 'k': 2, 'g': 1}
Câu điều kiện if else
sẽ kiểm tra nếu i
đã có trong count
rồi thì mà còn lặp lại nữa thì sẽ tăng i
lên một đơn vị, còn nếu chưa có trong count thì sẽ gán cho i=1.
Bằng cách trên thì bạn có thể đếm được toàn bộ các kí tự mà không bỏ qua bất cứ một kí tự nào.
Vậy là ta đã đếm được số lần kí tự xuất hiện các kí tự xuất hiện trong chuỗi. Để code nhìn đẹp và dễ đọc hơn ta có thể sắp xếp chúng tăng dần theo số lần xuất hiện. Sử dụng cách sắp xếp theo value mà mình đã nói đến trong bài trước.
for i in sorted(count, key=count.get, reverse=False): print(i, count[i])
kết quả:
w 1 e 1 c 1 m 1 a 1 p 1 r 1 i 1 g 1 t 2 n 2 k 2 l 3 h 3 o 4 5
Code hoàn chỉnh:
string = 'wellcom to lap trinh khong kho' count={} for i in string: if i in count: count[i] +=1 else: count[i] = 1 for i in sorted(count, key=count.get, reverse=False): print(i, count[i])
Đếm các từ xuất hiện trong chuỗi
Việc bạn cần làm đầu tiên là tách cách từ ra và tạo thành một danh sách.
string = 'wellcom to lap trinh khong kho' str = string.split(" ") print(str) #return ['wellcom', 'to', 'lap', 'trinh', 'khong', 'kho']
tiếp theo bạn áp dụng cách mà mình đã nói ở trên để đếm số lần các kí tự xuất hiện.
for i in str: if i in count: count[i]+=1 else: count[i]=1 for i in sorted(count, key=count.get, reverse=False): print(i, count[i])
code hoàn chỉnh:
string = 'wellcom to lap trinh khong kho' str = string.split(" ") count={} for i in str: if i in count: count[i]+=1 else: count[i]=1 for i in sorted(count, key=count.get, reverse=False): print(i, count[i])
Như vậy, mình đã chỉ cho các bạn cách đếm các kí tự, cũng như các từ xuất hiện trong chuỗi. Hi vọng bài viết sẽ giúp các bạn phần nào trong việc học python.
Tham gia group FB của Lập Trình Không Khó để cùng anh em chúng tôi giao lưu và chia sẻ nhé!
Để lại một bình luận