Python 字母计数词典
我的家庭作业问题是编写一个名为LetterCount()的Python函数,该函数将字符串作为参数并返回字母计数字典。但是,我的代码包含空格和逗号,作为字典的一部分,这是我不想要的。 你能帮帮我吗。如何从列表中删除空白?这是我的密码Python 字母计数词典,python,dictionary,Python,Dictionary,我的家庭作业问题是编写一个名为LetterCount()的Python函数,该函数将字符串作为参数并返回字母计数字典。但是,我的代码包含空格和逗号,作为字典的一部分,这是我不想要的。 你能帮帮我吗。如何从列表中删除空白?这是我的密码 import string def LetterCount(str): str= str.lower().strip() str = str.strip(string.punctuation) list1=list(str) lcDi
import string
def LetterCount(str):
str= str.lower().strip()
str = str.strip(string.punctuation)
list1=list(str)
lcDict= {}
for l in list1:
if l in lcDict:
lcDict[l] +=1
else:
lcDict[l]= 1
print lcDict
LetterCount("Abracadabra, Monsignor")
在
else
分支中分配计数之前,应检查l
是否为字母。如果是字母,则只指定计数。我不想为你做家庭作业,因为我不认为这对你有帮助,但我会尝试引导你正确的方向,尝试以下方法:
alphabet = map(chr, range(97, 123))
或
alphabet
和alphabet2
将包含列表中字母表中的所有小写字母
谢谢剩下的 来自python文档(注意前面和后面的方面):
strip(s[,chars])返回一个副本
带前导和后导的字符串的
删除尾随字符。如果查
如果省略或无,则为空白
字符将被删除。如给予及
不是无,字符必须是字符串;这个
字符串中的字符将被删除
从电缆两端剥离
调用此方法的字符串
在版本2.2.3中更改:字符
添加了参数。查尔
无法在此之前传入参数
2.2版本
您应该查看str.replace()和DefaultDict:)您想要的是
str.translate
而不是str.strip
您还可以检查l是否是字母字符(如果l.isalpha()
)
例如:
import string
def LetterCount(str):
str= str.lower().strip()
str = str.strip(string.punctuation)
list1=list(str)
lcDict= {}
for l in list1:
if l.isalpha():
if l in lcDict:
lcDict[l] +=1
else:
lcDict[l]= 1
print lcDict
LetterCount("Abracadabra, Monsignor")
另一个选项是使用
filter()
从字符串中删除所有非字母字符:
(在代码中使用时要小心--您使用了同名变量来隐藏内置的str
。切勿调用变量str
)扩展:
对于字母计数,最好的方法是使用字典
s = "string is an immutable object"
def letter_count(s):
d = {}
for i in s:
d[i] = d.get(i,0)+1
return d
输出:
{'a': 2, ' ': 4, 'c': 1, 'b': 2, 'e': 2, 'g': 1, 'i': 3, 'j': 1, 'm': 2, 'l': 1, 'o': 1, 'n': 2, 's': 2, 'r': 1, 'u': 1, 't': 3}
看起来很可疑,是的,在我发布我的问题之前我就看到了,但我们从来没有在课堂上做过这个代码。所以我是按照我知道的方式来做的,我使用了l的.isalpha()方法,它成功了。不去想那件事是愚蠢的。谢谢,我是编程新手,有时会忘记一些细节。你应该教他钓鱼!:)在这类问题中,如果你将OP指向
l.isalpha()
,应该足够了,因为调查是学习过程的一部分。。。没有伤害当然,我不怀疑你的意图是好的!
from collections import Counter
def LetterCount(text):
return Counter(c for c in text.lower() if c.isalpha())
s = "string is an immutable object"
def letter_count(s):
d = {}
for i in s:
d[i] = d.get(i,0)+1
return d
{'a': 2, ' ': 4, 'c': 1, 'b': 2, 'e': 2, 'g': 1, 'i': 3, 'j': 1, 'm': 2, 'l': 1, 'o': 1, 'n': 2, 's': 2, 'r': 1, 'u': 1, 't': 3}