🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# Python 程序:计算每个元音的数量 > 原文: [https://www.programiz.com/python-programming/examples/count-vowel](https://www.programiz.com/python-programming/examples/count-vowel) #### 在此程序中,您将学习使用字典和列表推导式来计算字符串中每个元音的数量。 要理解此示例,您应该了解以下 [Python 编程](/python-programming "Python tutorial")主题: * [Python `for`循环](/python-programming/for-loop) * [Python 字符串](/python-programming/string) * [Python 字符串方法](/python-programming/strings-method) * * * ## 源代码:使用字典 ```py # Program to count the number of each vowels # string of vowels vowels = 'aeiou' ip_str = 'Hello, have you tried our tutorial section yet?' # make it suitable for caseless comparisions ip_str = ip_str.casefold() # make a dictionary with each vowel a key and value 0 count = {}.fromkeys(vowels,0) # count the vowels for char in ip_str: if char in count: count[char] += 1 print(count) ``` **输出** ```py {'o': 5, 'i': 3, 'a': 2, 'e': 5, 'u': 3} ``` 在这里,我们采用了存储在`ip_str`中的字符串。 使用方法`casefold()`,我们使其适合无条件比较。 基本上,此方法返回字符串的小写版本。 我们使用字典方法`fromkeys()`来构造一个新字典,其中每个元音作为其键且所有值等于 0。这是计数的初始化。 接下来,我们使用[循环](/python-programming/for-loop "Python for loop")遍历输入字符串。 在每次迭代中,我们检查字符是否在字典键中(如果为元音则为`True`),如果为`true`,则将值增加 1。 * * * ## 源代码:使用列表和字典推导式 ```py # Using dictionary and list comprehension ip_str = 'Hello, have you tried our tutorial section yet?' # make it suitable for caseless comparisions ip_str = ip_str.casefold() # count the vowels count = {x:sum([1 for char in ip_str if char == x]) for x in 'aeiou'} print(count) ``` 该程序的**输出**与上述相同。 在这里,我们将[列表推导式](/python-programming/list)嵌套在[字典推导式](/python-programming/dictionary "Dictionary in Python")内,以在单行中对元音进行计数。 但是,由于我们迭代每个元音的整个输入字符串,因此该程序的速度较慢。