Python - 最小鍵值對


簡介

Python 是一種靈活且高效的程式語言,提供了廣泛的功能。程式設計中一個常見的任務是查詢集合中具有相同鍵的元素對。在本文中,我們將探討三種不同的方法,使用 Python 來解決這個問題。我們將研究涉及到的演算法,並花一點時間討論一些在給定程式碼中使用的重要語法,包括逐步說明,以及包含程式碼示例來說明解決方案。那麼,讓我們開始吧。

最小鍵值對方法

字典:在 Python 中,字典用大括號 {} 括起來,包含鍵值對。要訪問與鍵關聯的值,可以使用方括號 [] 並將鍵放在其中。

迭代:要迭代集合(例如列表或元組),可以使用 for 迴圈。for 迴圈允許您依次訪問集合中的每個元素。

Lambda 函式:Lambda 函式是小的、匿名的函式,可以在一行中定義。它們通常用作高階函式的引數,或者在只需要函式很短時間的情況下。

排序:Python 中的 sorted() 函式返回一個新列表,其中包含來自原始列表的所有元素,按升序排列。它接受一個可選的 key 引數,該引數指定一個函式,用於從每個元素中提取比較鍵。

DefaultDict:來自 collections 模組的 defaultdict 類是內建 dict 類的子類。它重寫了一個方法 __missing__(),該方法在字典中找不到鍵時被呼叫。預設情況下,它返回在物件初始化期間指定預設值。

方法 1:使用字典

在 Python 中查詢最小鍵值對的一種最佳和最高效的方法是使用字典。以下是包含的步驟

演算法

步驟 1:建立一個空字典來儲存元素及其對應的鍵。

步驟 2:遍歷元素集合。

步驟 3:對於每個元素,檢查其鍵是否存在於字典中。

步驟 4:如果鍵存在,則將當前元素與與該鍵關聯的現有值進行比較。

步驟 5:如果當前元素較小,則使用當前元素更新字典中的值。

步驟 6:如果鍵不存在於字典中,則將當前元素作為與該鍵關聯的值新增。

步驟 7:遍歷所有元素後,字典將包含最小鍵值對。

示例

def find_minimum_key_equal_pairs(elements):
    pairs = {}
    
    for element in elements:
        key = element[0]  
        value = element[1]  
        
        if key in pairs:
            if value < pairs[key]:
                pairs[key] = value
        else:
            pairs[key] = value
    
    return pairs

elements = [('A', 5), ('B', 3), ('A', 2), ('C', 4), ('B', 1)]
print(find_minimum_key_equal_pairs(elements))

輸出

 {'A': 2, 'B': 1, 'C': 4}

方法 2:使用 itertools 的 groupby

Python 提供了一個強大的模組 itertools,它包含用於操作和迭代集合的各種函式。這些函式之一是 groupby,它根據鍵函式對可迭代物件中的連續元素進行分組。以下是使用 groupby 查詢最小鍵值對的步驟

演算法

步驟 1:從 itertools 模組匯入 groupby 函式。

步驟 2:根據鍵對元素集合進行排序。

步驟 3:對排序後的元素使用 groupby 函式,指定鍵函式。

步驟 4:遍歷組並查詢每個鍵的最小值。

讓我們看看這種方法的程式碼用法

示例

from itertools import groupby

def find_minimum_key_equal_pairs(elements):
    sorted_elements = sorted(elements, key=lambda x: x[0])  
    groups = groupby(sorted_elements, key=lambda x: x[0])  
    
    pairs = {key: min(value[1] for value in group) for key, group in groups}
    
    return pairs

elements = [('A', 5), ('B', 3), ('A', 2), ('C', 4), ('B', 1)]
print(find_minimum_key_equal_pairs(elements))

輸出

 {'A': 2, 'B': 1, 'C': 4}

方法 3:使用 DefaultDict

在 Python 中查詢最小鍵值對的另一種方法是使用 collections 模組中的 defaultdict 類。defaultdict 會自動為不存在的鍵初始化值,這對於此任務很有用。以下是包含的步驟

演算法

步驟 1:匯入所需的庫。

步驟 2:建立一個 defaultdict 物件,其預設值設定為無窮大。

步驟 3:建立一個 defaultdict 物件,其預設值設定為無窮大。

讓我們看看這種方法的程式碼執行

示例

from collections import defaultdict

def find_minimum_key_equal_pairs(elements):
    pairs = defaultdict(lambda: float('inf'))
    
    for key, value in elements:
        if value < pairs[key]:
            pairs[key] = value
    
    return pairs

elements = [('A', 5), ('B', 3), ('A', 2), ('C', 4), ('B', 1)]
print(find_minimum_key_equal_pairs(elements))

輸出

defaultdict(<function find_minimum_key_equal_pairs.<locals>.<lambda> at 0x000001C7712C0400>, {'A': 2, 'B': 1, 'C': 4})

結論

我們研究了三種不同的方法來查詢 Python 中的最小鍵值對。這些方法包括使用字典、itertools 模組的 groupby 函式以及 collections 模組的 defaultdict 類。透過遵循給定的演算法和程式碼示例,您可以有效地解決此問題並獲得所需的輸出。Python 的靈活性和表達性語法使其成為此類任務的絕佳選擇,為程式設計師提供了一個強大的工具包來處理各種程式設計挑戰。

更新於:2023年8月7日

69 次瀏覽

啟動您的職業生涯

透過完成課程獲得認證

開始
廣告