Python - 矩陣間分組


矩陣間分組是指兩組不同的列表,其中第一個元素的子列表被視為公共匹配項。如果找到匹配項,則將第一個元素作為字典的鍵,其餘兩個元素用於矩陣分組。在 Python 中,我們有一些內建函式,例如 setdefault()、defaultdict() 和 append() 可用於解決矩陣間分組問題。

讓我們來看一個例子。

給定兩個列表:

list_1 = [[1, 2], [3, 4], [4, 5], [5, 6]]

list_2 = [[5, 60], [1, 22], [4, 59], [3, 14]]

因此,最終輸出結果為 {1: [2, 22], 3: [4, 14], 4: [5, 59], 5: [6, 60]}

語法

以下語法在示例中使用:

setdefault()

setdefault 是 Python 中的內建函式,用於返回具有特定鍵的元素。

append()

append() 是 Python 中的內建函式,用於在列表末尾插入元素。

defaultdict()

defaultdict() 是 Python 中的內建函式,它會自動生成鍵值對,其中包含預設值。此函式有助於處理字典中缺失的鍵。

使用 setdefault() 函式

在以下示例中,程式使用遞迴函式接受兩個不同的列表來計算矩陣間分組。接下來,它將使用空字典來儲存最終結果作為輸出。繼續使用 for 迴圈迭代併合並兩個輸入列表,並使用內建函式 setdefault() 和 append() 將鍵設定為單個元素,並將值對設定為矩陣分組。透過函式返回,它生成結果字典。

示例

def int_grp_matrix(l1, l2):
    result = {}
    for key, value in l1 + l2:
        result.setdefault(key, []).append(value)
    return result
list1 = [[20, 0], [40, 200], [60, 300]]
list2 = [[40, 500], [60, 50], [20, 100]]
res = int_grp_matrix(list1, list2)
print("Inter Matrix grouping result:\n", res)

輸出

 Inter Matrix grouping result: 
{20: [0, 100], 40: [200, 500], 60: [300, 50]}

使用 defaultdict() 函式

在以下示例中,我們將從一個遞迴函式開始,該函式會呼叫自身並接受兩個引數 l1 和 l2 以接收輸入列表的值。然後使用內建函式 defaultdict(list),如果第一個元素的輸入列表不滿足公共匹配項,則處理缺失的鍵並將其儲存在變數 result 中。接下來,它使用 for 迴圈迭代並連線兩個輸入列表。然後變數 result 將引數設定為鍵,對於值對,它將使用內建函式 append() 插入矩陣分組。最後,我們使用函式返回以及內建函式 dict() 將變數 result 的值轉換為字典形式。

示例

from collections import defaultdict
def int_grp_matrix(l1, l2):
    result = defaultdict(list)
    for key, value in l1 + l2:
        result[key].append(value)
    return dict(result)
list1 = [[20, 0], [40, 200], [60, 300]]
list2 = [[40, 500], [60, 50], [20, 100]]
res = int_grp_matrix(list1, list2)
print("Inter Matrix grouping result:\n", res)

輸出

 Inter Matrix grouping result: 
{20: [0, 100], 40: [200, 500], 60: [300, 50]}

使用字典和列表推導式

在以下示例中,從一個遞迴函式開始程式,該函式設定了一些條件和操作,例如合併兩個不同的列表、空字典、迴圈和條件語句,以計算矩陣間分組並列印輸出。

示例

def int_grp_matrix(l1, l2):
    merge_list = l1 + l2
    result = {}
    for key, val in merge_list:
        if key in result:
            result[key].append(val)
        else:
            result[key] = [val]
    return result
list1 = [[20, 0], [40, 200], [60, 300]]
list2 = [[40, 500], [60, 50], [20, 100]]
res = int_grp_matrix(list1, list2)
print("The result of Inter Matrix Grouping:\n", res)

輸出

The result of Inter Matrix Grouping: {20: [0, 100], 40: [200, 500], 60: [300, 50]}

結論

我們知道矩陣分組是字典中值對位置上的一組整數元素。以上示例展示了初始化兩個不同的列表,這意味著查詢兩個列表中第一個元素的公共匹配項,並將此元素轉換為字典的鍵,並使用某些條件將值對設定為矩陣分組。這種型別的程式通常用於解決演算法問題陳述。

更新於: 2023年8月14日

89 次檢視

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告
© . All rights reserved.