首页 > 解决方案 > 如何编写一个 Python 函数来计算一个字母在字符串中出现的次数?

问题描述

下面的代码有两个问题

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 个字典,而不是与字符串中的字母一样多的字典。

其次,然后我需要能够访问每个键以确定与之关联的值是否为奇数并返回具有与其关联的奇数值的键?

有谁知道如何做到这一点?

标签: pythondictionaryfor-loopkey

解决方案


它不是返回多个字典,而是返回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)]

推荐阅读