使用 Python 對開頭和結尾字元相同的單詞進行分組


在 Python 中,我們可以使用字典和迴圈、正則表示式以及列表推導式等方法對開頭和結尾字元相同的單詞進行分組。該任務涉及分析單詞集合並識別共享相同開頭和結尾字元的單片語。這在各種自然語言處理應用中可能是一種有用的技術,例如文字分類、資訊檢索和拼寫檢查。在本文中,我們將探討這些方法,以在 Python 中對開頭和結尾字元相同的單詞進行分組。

方法 1:使用字典和迴圈

此方法利用字典根據單詞的相同開頭和結尾字元對單詞進行分組。透過迭代單詞列表並提取每個單詞的開頭和結尾字元,我們可以為字典建立一個鍵。然後將單詞追加到字典中相應的列表中,根據其開頭和結尾字元形成組。

語法

list_name.append(element)

這裡,append() 函式是列表方法,用於將元素新增到列表名稱的末尾。List_name 是應用 append 方法的列表。

示例

在下面的示例中,我們定義了一個函式 group_words,它將單詞列表作為輸入。我們初始化一個名為 groups 的空字典以儲存單片語。對於輸入列表中的每個單詞,我們提取開頭字元 (word[0]) 和結尾字元 (word[−1])。然後,我們使用這些字元建立一個元組鍵。

如果鍵已存在於字典中,我們將當前單詞追加到相應的列表中。否則,我們將建立一個新的列表,並將當前單詞作為其第一個元素。最後,我們返回生成的組字典。

def group_words(words):
    groups = {}
    for word in words:
        start_char = word[0]
        end_char = word[-1]
        key = (start_char, end_char)
        if key in groups:
            groups[key].append(word)
        else:
            groups[key] = [word]
    return groups

words = ['apple', 'banana', 'ant', 'cat', 'dog', 'elephant','amazon grape']
result = group_words(words)
print(result)

輸出

{('a', 'e'): ['apple', 'amazon grape'], ('b', 'a'): ['banana'], ('a', 't'): ['ant'], ('c', 't'): ['cat'], ('d', 'g'): ['dog'], ('e', 't'): ['elephant']}

方法 2:使用正則表示式

在此方法中,正則表示式用於匹配每個單詞中的模式。透過定義一個特定的模式來捕獲單詞的開頭和結尾字元,我們可以提取這些字元並建立一個用於分組的鍵。

語法

import re
result = re.split(pattern, string)

這裡,re 模組中的 re.split 函式接受兩個引數:pattern 和 string。pattern 是定義拆分標準的正則表示式,而 string 是要拆分的輸入字串。該函式根據指定的模式返回拆分操作產生的子字串列表。

示例

在下面的方法中,我們利用 re 模組使用正則表示式匹配每個單詞的開頭和結尾字元。我們定義了一個函式 group_words,它將單詞列表作為輸入。在迴圈內部,我們使用 re.match 將模式 ^(.)(.*)(.)$ 與每個單詞匹配。如果找到匹配項,我們將分別使用 match.group(1) 和 match.group(3) 提取開頭和結尾字元。然後,我們按照方法 1 中類似的過程,根據單詞的開頭和結尾字元對單詞進行分組。

import re

def group_words(words):
    groups = {}
    for word in words:
        match = re.match(r'^(.)(.*)(.)$', word)
        if match:
            start_char = match.group(1)
            end_char = match.group(3)
            key = (start_char, end_char)
            if key in groups:
                groups[key].append(word)
            else:
                groups[key] = [word]
    return groups

words = ['apple', 'banana', 'ant', 'cat', 'dog', 'elephant','amazon grape']
result = group_words(words)
print(result)

輸出

{('a', 'e'): ['apple', 'amazon grape'], ('b', 'a'): ['banana'], ('a', 't'): ['ant'], ('c', 't'): ['cat'], ('d', 'g'): ['dog'], ('e', 't'): ['elephant']}

方法 3:使用列表推導式

列表推導式提供了一種簡潔高效的方法來根據單詞的開頭和結尾字元對單詞進行分組。透過使用字典推導式和後續的列表推導式,我們可以建立一個組字典並用相應的單詞填充它。

示例

在下面的示例中,我們定義了一個函式 group_words,它將單詞列表作為輸入。使用單個列表推導式,我們建立了初始字典 groups,所有鍵都設定為空列表。在下一個列表推導式中,我們迭代輸入列表中的每個單詞。對於每個單詞,我們使用 (word[0], word[−1]) 作為鍵訪問字典中的相應列表,並將單詞追加到其中。

語法

[expression for item in list if condition]

這裡,語法由方括號組成,方括號內包含表示式,後跟一個迭代列表的 for 迴圈。此外,可以新增可選的 if 條件來過濾元素。對於滿足條件的列表中的每個專案,都會計算表示式,並將結果收集到一個新列表中。

def group_words(words):
    groups = {(word[0], word[-1]): [] for word in words}
    [groups[(word[0], word[-1])].append(word) for word in words]
    return groups

words = ['apple', 'banana', 'ant', 'cat', 'dog', 'elephant','amazon grape']
result = group_words(words)
print(result)

輸出

{('a', 'e'): ['apple', 'amazon grape'], ('b', 'a'): ['banana'], ('a', 't'): ['ant'], ('c', 't'): ['cat'], ('d', 'g'): ['dog'], ('e', 't'): ['elephant']}

結論

在本文中,我們討論瞭如何在 Python 中使用各種方法對開頭和結尾字元相同的單詞進行分組。我們使用三種不同的方法對單詞進行了分組:使用字典和迴圈、使用正則表示式以及使用列表推導式。透過使用這些技術,您可以有效地對單詞進行分組並從文字資料中獲得有價值的見解,為各種自然語言處理應用開啟可能性。

更新於: 2023年7月17日

176 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告