在 Python 中計算字串中字元的出現次數

Hiten Kanwar 2023年10月10日
  1. 在 Python 中使用 count() 函式計算字串中出現的字元數
  2. 在 Python 中使用 collections.Counter 計算字串中字元的出現次數
  3. 在 Python 中使用正規表示式計算字串中字元的出現次數
  4. 在 Python 中使用 defaultdict 計算字串中字元的出現次數
  5. 在 Python 中使用 pandas.value_counts() 計算字串中字元的出現次數
  6. 在 Python 中使用 lambda 表示式計算字串中字元的出現次數
  7. 在 Python 中使用 for 迴圈計算字串中字元的出現次數
在 Python 中計算字串中字元的出現次數

在程式設計中,字串是一個字元序列。

本教程將介紹如何在 Python 中統計字串中某個字元出現的次數。

在 Python 中使用 count() 函式計算字串中出現的字元數

我們可以使用 count() 函式計算字串中某個值的出現次數。它將返回該值在給定字串中出現的次數。

例如,

print("Mary had a little lamb".count("a"))

輸出:

4

請記住,大寫和小寫被視為不同的字元。‘A’ 和 ‘a’ 將被視為不同的字元並具有不同的計數。

在 Python 中使用 collections.Counter 計算字串中字元的出現次數

Countercollections 模組中的一個字典子類。它將元素儲存為字典鍵,並將它們的出現儲存為字典值。它不會引發錯誤,而是為丟失的專案返回零計數。

例如,

from collections import Counter

my_str = "Mary had a little lamb"
counter = Counter(my_str)
print(counter["a"])

輸出:

4

當計數多個字母時,這是一個更好的選擇,因為計數器會一次計算所有計數。它比 count() 函式快得多。

在 Python 中使用正規表示式計算字串中字元的出現次數

正規表示式是包含在模式中的特殊語法,它通過匹配該模式來幫助查詢字串或字串集。我們匯入 re 模組來處理正規表示式。

我們可以使用 findall() 函式來解決我們的問題。

例如,

import re

my_string = "Mary had a little lamb"
print(len(re.findall("a", my_string)))

輸出:

4

在 Python 中使用 defaultdict 計算字串中字元的出現次數

Defaultdict 存在於 collections 模組中,並從字典類派生。它的功能與字典的功能相對相同,只是它從不引發 KeyError,因為它為從不存在的鍵提供預設值。

我們可以使用它來獲取字串中某個字元的出現次數,如下所示。

from collections import defaultdict

text = "Mary had a little lamb"
chars = defaultdict(int)

for char in text:
    chars[char] += 1

print(chars["a"])
print(chars["t"])
print(chars["w"])  # element not present in the string, hence print 0

輸出:

4
2
0

在 Python 中使用 pandas.value_counts() 計算字串中字元的出現次數

我們可以使用 pandas.value_counts() 方法來獲取提供的字串中出現的所有字元的出現次數。我們需要將字串作為 Series 物件傳遞。

例如,

import pandas as pd

phrase = "Mary had a little lamb"
print(pd.Series(list(phrase)).value_counts())

輸出:

     4
a    4
l    3
t    2
e    1
b    1
h    1
r    1
y    1
M    1
m    1
i    1
d    1
dtype: int64

它返回 Series 物件中所有字元的出現次數。

在 Python 中使用 lambda 表示式計算字串中字元的出現次數

lambda 函式不僅可以計算給定字串的出現次數,還可以在我們擁有字串時作為子字串列表工作。

請參考以下程式碼。

sentence = ["M", "ar", "y", "had", "a", "little", "l", "am", "b"]
print(sum(map(lambda x: 1 if "a" in x else 0, sentence)))

輸出:

4

在 Python 中使用 for 迴圈計算字串中字元的出現次數

我們遍歷字串,如果元素等於所需的字元,則計數變數遞增,直到到達字串的末尾。

例如,

sentence = "Mary had a little lamb"
count = 0
for i in sentence:
    if i == "a":
        count = count + 1
print(count)

輸出:

4

我們可以看到另一種使用 sum() 函式的方法,如下所示。

my_string = "Mary had a little lamb"
print(sum(char == "a" for char in my_string))

輸出:

4

相關文章 - Python String