如何编写Python函数来计算字母在字符串中出现的次数?
下面的代码有两个问题如何编写Python函数来计算字母在字符串中出现的次数?,python,dictionary,for-loop,key,Python,Dictionary,For Loop,Key,下面的代码有两个问题 S = "acbcbba" def count_letters(text): result = {} for letter in text: if letter.isalpha(): if letter.lower() in result.keys(): result[letter.lower()] += 1 else:
S = "acbcbba"
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
print(result)
return(result)
count_letters(S)
首先,我不知道如何修改它,因此它只返回1个字典,而不是返回字符串中字母的数量
其次,我需要能够访问每个键,以确定与之关联的值是否为奇数,并返回与它们关联的奇数值的键
有人知道怎么做吗?它不是返回多个词典,而是返回一个词典,然后打印其他词典。只需删除您的
print
语句即可
关于查询计数为奇数的项目,您可以使用字典的项目()
的列表理解,并通过其奇数值(即计数)进行过滤
>>> d = count_letters(S)
>>> d
{'a': 2, 'c': 2, 'b': 3}
>>> [key for key, value in d.items() if value % 2 == 1]
['b']
若您想要一个键值对列表,那个么您可以做类似的事情
>>> [(key, value) for key, value in d.items() if value % 2 ==1 ]
[('b', 3)]
所有这些都是关于压痕的,但这里有一个解决方案
S = "acbcbba"
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
print(result)
return(result)
count_letters(S)
输出
{'a': 2, 'c': 2, 'b': 3}
无论如何,如果函数中有print
,则没有理由返回,或者您可以仅返回
结果,然后print
如下所示
S = "acbcbba"
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)
print(count_letters(S))
您可以为此使用内置函数。要计算特定字符,只需执行
S.count('a')
。为了得到一本包含所有字符的字典,你可以这样做
S = "acbcbba"
my_dict = {k:S.count(k) for k in set(S)}
你在说什么?您只返回了一本词典。谢谢您的建议!有没有一种方法可以做一件非常类似的事情,但返回键、值对?我需要能够返回如何使字符串的每个字母出现偶数次,在这个例子中,我需要返回1减去1的b值。或者对于deeded,它需要是2,一个字母e和一个字母d?