以下代码有两个问题
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个字典,而不是与字符串中的字母一样多的字典。
第二,然后我需要能够访问每个键以弄清与其关联的值是否为奇数,并返回具有与之关联的奇数值的键?
有人对如何执行此操作有任何想法吗?
答案 0 :(得分:2)
它不返回多个字典,它是返回 1个字典,而打印其他字典。只需删除您的print
语句即可。
关于查询计数为奇数的项目,您可以使用字典的items()
的列表理解,并按其值为奇数的值(即计数)进行过滤。
>>> 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)]
答案 1 :(得分:1)
所有都是关于缩进,但这是一个解决方案
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
,或者您可以return
仅返回结果,然后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))
答案 2 :(得分:0)
您可以为此使用内置功能。要计算特定字符,只需执行mimap
。要获得包含所有字符的字典,您可以执行类似的操作
S.count('a')