python字母统计和输出

帮帮忙,感谢!
【问题描述】输入字符串,输出字符串中字母字符及其出现次数。
要求:使用字典实现。
【输入形式】
一个字符串。
【输出形式】
每个字母字符及其出现的次数,输出格式见样例输出。
每行输出5个字母的统计结果。
【样例输入】
Hello world!123
【样例输出】
H - 1 e - 1 l - 3 o - 2 w - 1 
r - 1 d - 1

import collections

x = input()
y = dict(collections.Counter(x))  
cnt = 0   # 用于计数,五个了就换行,记得重置为0
for i, j in y.items():
    if cnt != 5 and (65 <= ord(i) <= 90 or 97 <= ord(i) <= 122):
        print("{} - {}".format(i, j), end=" ")
        cnt += 1
        if cnt == 5:
            print()
            cnt = 0

s = input()
a = {i:s.count(i) for i in s if i.isalpha()}

output = []
for i, j in a.items():
    output.append(f'{i} - {j}')

for i in range(len(output)//5):
    print(' '.join(output[5*i : 5*(i+1)]))
if len(output)%5:
    print(' '.join(output[5*(i+1):]))

比较精简的写法如下:

dic = {}

s = input()

for i in s:
    if 'A'<=i<='Z' or 'a'<=i<='z':
        dic[i] = dic.get(i,0) + 1

for n,d in enumerate(dic.items()):
    print(f'{d[0]} - {d[1]}', end = '\n' if n%5==4 else ' ')

如有帮助,请给个采纳。谢谢!