Python 字母计数功能
我需要定义一个函数,该函数接受字符串并计算输入中字母表(仅小写)的字母数,例如,如果我输入“jack”,它将返回:Python 字母计数功能,python,list-comprehension,counter,alphabetical,alphabetical-sort,Python,List Comprehension,Counter,Alphabetical,Alphabetical Sort,我需要定义一个函数,该函数接受字符串并计算输入中字母表(仅小写)的字母数,例如,如果我输入“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(
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
我不知道如何改变它,因为我得到了相同的错误 您可以为此使用
计数器对象
from collections import Counter
Counter(x for x in string.lower() if x.isalpha())
这会将字符串中的所有字符转换为小写,检查它们是否为字母,然后对所有字符进行计数。您可以使用计数器
对象进行此操作
from collections import Counter
Counter(x for x in string.lower() if x.isalpha())
这会将字符串中的所有字符转换为小写,检查它们是否为字母,然后对所有字符进行计数。我想您需要这个:
import string
def l_count(stra):
stra = stra.lower()
return {i:stra.count(i) for i in string.ascii_lowercase}
我想你需要这个:
import string
def l_count(stra):
stra = stra.lower()
return {i:stra.count(i) for i in string.ascii_lowercase}
这里有一种方法:
您可能希望在字符串中添加逻辑,排除标点符号等。这里有一种方法:
您可能希望向字符串添加逻辑,排除标点符号等。如果您只需要字符串中的字符,则可以使用对象:
如果要显示所有小写字母的计数,现在可以这样循环:
>>> import string
>>> ','.join('{}={}'.format(ch, my_counter.get(ch, 0)) for ch in string.ascii_lowercase)
'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'
>>> for ch in string.ascii_lowercase:
... print(ch, my_counter.get(ch, 0))
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
如果只需要字符串中的字符,则可以使用以下对象:
如果要显示所有小写字母的计数,现在可以这样循环:
>>> import string
>>> ','.join('{}={}'.format(ch, my_counter.get(ch, 0)) for ch in string.ascii_lowercase)
'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'
>>> for ch in string.ascii_lowercase:
... print(ch, my_counter.get(ch, 0))
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
这是因为al
是一个列表错误信息非常清楚,不是吗?我知道,但我如何更改它虽然很诱人,但不要调用字符串str
-这是一个内置函数。请阅读。这是因为al
是一个列表错误信息非常清楚,不是吗?我知道,但我如何更改它尽管它很诱人,但不要调用您的字符串str
-这是一个内置函数。请阅读。这不包括所有…=0
计数OP似乎想要的。如果您使用计数器。get('',0)
检索计数,当一个字符不存在时,它将返回0。这也是事实。事实上,您甚至不必获取
,您也可以对任何不在字符串中的x
执行计数器[x]
,并将获取0
。这不包括所有..=0
计数。但是,如果使用计数器,则为True。获取('',0)
以检索计数,当一个字符不存在时,它将返回0。这也是事实。事实上,您甚至不必get
,您也可以对字符串中不存在的任何x
执行counter[x]
,并将获得0
。方法str.lower
具有返回值。它不会在内部修改实例。在您的情况下,它应该是stra=stra.lower()
。方法str.lower
有一个返回值。它不会在内部修改实例。在您的情况下,它应该是stra=stra.lower()
。