我需要定义一个函数,该函数需要一个字符串并计算输入中字母的字母数(仅小写),例如,如果我输入“ jack”,它将返回:

a=1,b=0,c=1,d=0,...,j=1,k=1,...,z=0.


因此,我实现了以下内容:

def l_count(str):
    str.lower()
    for ch in str:
        return str.count('a')


仅返回字符串中“ a”的数字。
由于我不想对所有字母都这样做,所以我想到了实现这样的列表理解:

al = [chr(i) for i in range(ord('a'),ord('z'))]
def l_count(str):
    str.lower()
    for character in str:
        return str.count(al)


但是我得到一个错误:

must be str, not list


由于出现相同的错误,我不知道如何更改它。

最佳答案

这是使用collections.Counter的一种方法:

from collections import Counter
from string import ascii_lowercase

x = 'jack'

c = Counter(dict.fromkeys(ascii_lowercase, 0))
c.update(Counter(x))

print(*(f'{k}={v}' for k, v in c.items()), sep=',')

a=1,b=0,c=1,d=0,e=0,f=0,g=0,h=0,i=0,j=1,k=1,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0


您可能希望为字符串lowercase添加逻辑,排除标点符号等。

关于python - 信纸计数功能,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52892184/

10-12 14:28