您可以使用collections.Counter https://docs.python.org/3/library/collections.html#collections.Counter为了这
with open('grades.txt') as f:
print(Counter(f.read()))
Example
这是一个有字母的测试
Output
Counter({'t': 7,
' ': 6,
's': 5,
'a': 3,
'h': 3,
'e': 3,
'i': 2,
'l': 1,
'r': 1})
或者只包含字母
from string import ascii_letters
with open('grades.txt') as f:
print(Counter(i for i in f.read() if i in ascii_letters))
Edit
无需使用任何其他库,手动方式即可完成与上述相同的操作:
from string import ascii_letters
d = {}
with open('grades.txt') as f:
for letter in d.read():
if letter in ascii_letters:
if letter in d:
d[letter] += 1
else:
d[letter] = 1
如果你的文件看起来像
A A+ B B- B B+ B+ A A- B+
那么对上面的代码进行修改就是
d = {}
with open('grades.txt') as f:
for grade in d.read().split():
if grade in d:
d[grade] += 1
else:
d[grade] = 1