Python 一种将文本中的字母添加到字典中而无需穿孔的函数
我写了一个函数,可以向字典中添加字母,但当我在termianl中运行它时,它会不断地向字典中添加穿孔。我试过用“和var!=”,“和var!=”-“,等等,但不起作用,我也不明白为什么Python 一种将文本中的字母添加到字典中而无需穿孔的函数,python,python-3.x,Python,Python 3.x,我写了一个函数,可以向字典中添加字母,但当我在termianl中运行它时,它会不断地向字典中添加穿孔。我试过用“和var!=”,“和var!=”-“,等等,但不起作用,我也不明白为什么 i = 0 while i < len(text): for var in text[i] if var not in d: d[var] = 1 else: d[var] += 1 i += 1 return
i = 0
while i < len(text):
for var in text[i]
if var not in d:
d[var] = 1
else:
d[var] += 1
i += 1
return(d)
i=0
而我
使用isalpha()是一种方法:
def dict_letters(text):
i = 0
d = {}
while i < len(text):
for var in text[i]:
if var.isalpha():
if var not in d:
d[var] = 1
else:
d[var] += 1
i += 1
return(d)
print(dict_letters("This is a Text 1, this is a number 1"))
Python区分大写字母和小写字母,如果您希望它组合大写字母和小写字母:
def dict_letters(text):
d = {}
for chr in text:
if chr.isalpha():
if chr.lower() not in d:
d[chr.lower()] = 1
else:
d[chr.lower()] += 1
return(d)
print(dict_letters("This is a Text 1, this is a number 1"))
对于您的任务,IMO最具吸引力的解决方案是:
from collections import Counter
def dict_letters(text):
return Counter(c for c in text if c.isalpha()).items()
我假设您要计算文本中的不同字符。对于计数,python中有一个非常有用的计数器
类。通过使用isalpha
我们询问每个字符c
是否是字母或标点符号
(因为到目前为止您的代码还没有编译,这只是一个猜测。)欢迎使用!请分享一些输入和预期输出。您是否只想计算字母的频率?如果是这样,
导入集合,重新
并使用collections.Counter(re.findall(r“[a-zA-Z]”,s))
。请提供一个issue@ggorlen非常感谢。是的!我正在对一个文本文件运行它,我注意将所有字母放入一个字典中,不要点击。请将您的代码示例更改为一段我们可以执行的代码。我们看到一个返回
,但没有看到def
。我们也没有看到d
的定义。因此,您的代码无法编译。我们不能测试它。当标准库中有更快的替代方案时,我们不应该教新手if-else解决方案。“重新发明轮子既慢又容易出错。”LydiavanDyke我认为他是在尝试学习不同的概念,而不是编写适合生产的代码。我可能错了。我只是想帮忙。当然,我们都想帮忙。但在我看来,正确看待这种固定的尝试也很重要。“这会修复你的代码,但你不应该这样做”应该是答案:)别忘了:将来其他人可能会偶然发现这个答案。他们可能只是复制提议的解决方案。。。输入他们的生产代码。
from collections import Counter
def dict_letters(text):
return Counter(c for c in text if c.isalpha()).items()