Sử dụng collections.Counter()
:
from collections import Counter
with open(file) as f:
c = Counter()
for x in f:
c += Counter(x.strip())
Như @mgilson chỉ ra, trong trường hợp nếu các tập tin không phải là quá lớn, bạn chỉ có thể làm:
c = Counter(f.read().strip())
ví dụ:
>>> c = Counter()
>>> c += Counter('aaabbbcccddd eee fff ggg')
>>> c
Counter({'a': 3, ' ': 3, 'c': 3, 'b': 3, 'e': 3, 'd': 3, 'g': 3, 'f': 3})
>>> c += Counter('aaabbbccc')
Counter({'a': 6, 'c': 6, 'b': 6, ' ': 3, 'e': 3, 'd': 3, 'g': 3, 'f': 3})
hoặc sử dụng các phương pháp count()
của chuỗi:
from string import ascii_lowercase # ascii_lowercase =='abcdefghijklmnopqrstuvwxyz'
with open(file) as f:
text = f.read().strip()
dic = {}
for x in ascii_lowercase:
dic[x] = text.count(x)
Nguồn
2012-09-09 19:26:59
http://stackoverflow.com/search ? q = [python] + số –
[Ở đây] (http://stackoverflow.com/a/5148987/866571) là câu hỏi tương tự được hỏi. – Mayura
có thể trùng lặp của [Tần số thư trong python] (http://stackoverflow.com/questions/5148903/letter-frequency-in-python) –