# 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")内，以在单行中对元音进行计数。

但是，由于我们迭代每个元音的整个输入字符串，因此该程序的速度较慢。