Python 计算字符串中出现的字母数,并将字母及其出现次数作为键值对添加到字典中
我编写了一个函数来计算字母在字符串中出现的次数,并返回字母以及它在字符串中作为键:值对出现的次数。在字典中,该函数用于忽略任何标点符号 这是我的Python 计算字符串中出现的字母数,并将字母及其出现次数作为键值对添加到字典中,python,dictionary,Python,Dictionary,我编写了一个函数来计算字母在字符串中出现的次数,并返回字母以及它在字符串中作为键:值对出现的次数。在字典中,该函数用于忽略任何标点符号 这是我的 def count_letters(text): result = {} for letter in text: if letter.isalpha(): if result[letter.lower()]: result[letter.lower()] += 1
def count_letters(text):
result = {}
for letter in text:
if letter.isalpha():
if result[letter.lower()]:
result[letter.lower()] += 1
result[letter.lower()] = 1
return(result)
我认为如果关键结果[字母]不存在,它应该跳过if语句
if result[letter.lower()]:
但它却抛出了一个关键错误,我做错了什么
我期待着如果
text = "This is a sentence."
然后我的函数应该返回
{'t': 2, 'h': 1, 'i': 2, 's': 3, 'a': 1, 'e': 3, 'n': 2, 'c': 1}
我试图在不导入任何模块的情况下完成此操作,这是一个学习练习,旨在提高我对词典的知识。它抛出了一个键错误,因为该键还不存在。请改用try,除非:
lower = letter.lower() # Only need to do this once
try:
result[lower] += 1
except KeyError:
result[lower] = 1
也是FWIW,实现这一点的标准方法是,例如:
试试看:
def count_letters(text):
result = {}
for letter in text:
if letter.isalpha():
if letter.lower() in result.keys():
result[letter.lower()] += 1
else:
result[letter.lower()] = 1
return(result)
谢谢正如所料,我看到很多文章显示我可以通过使用集合得到相同的答案。感谢两个答案!除了在result.items()中使用if-letter.lower()之外,我完全尝试了这个方法:现在我知道哪里出了问题,谢谢!
def count_letters(text):
result = {}
for letter in text:
if letter.isalpha():
if letter.lower() in result.keys():
result[letter.lower()] += 1
else:
result[letter.lower()] = 1
return(result)