Python - 將相似值列表分組到字典中


在 Python 中,我們可以使用迴圈和條件語句、使用 defaultdict 以及使用 itertools 模組中的 groupby 方法將相似值列表分組到字典中。將它們分組在分析複雜資料時非常有用。在本文中,我們將瞭解如何使用這些方法將相似值列表分組到字典中。

方法 1:使用迴圈和條件語句

將列表中相似值分組並轉換為字典的最簡單方法之一是使用迴圈和條件語句。在此方法中,我們初始化一個名為 groups 的空字典。然後,我們遍歷輸入列表 lst 中的每個專案。對於每個專案,我們檢查它是否已作為 groups 字典中的鍵存在。如果存在,我們將該專案追加到與該鍵關聯的列表中。否則,我們在 groups 字典中建立一個新鍵,並將該專案作為其值。

語法

list_name.append(element)

這裡,append() 函式是列表方法,用於將元素新增到列表名稱的末尾。它透過將指定的元素作為新專案新增到列表中來修改原始列表。

示例

在下面的示例中,輸入列表包含重複的值。group_list_to_dict() 函式對相似值進行分組,並建立一個字典,其中鍵表示不同的值,與每個鍵關聯的值是在原始列表中該值的出現次數。

def group_list_to_dict(lst):
    groups = {}
    for item in lst:
        if item in groups:
            groups[item].append(item)
        else:
            groups[item] = [item]
    return groups

輸出

{1: [1, 1], 2: [2, 2], 3: [3, 3], 4: [4, 4], 5: [5]}

方法 2:使用 collections 模組中的 defaultdict

Python 中的 collections 模組提供了一個 defaultdict 類,可用於將列表中相似值分組到字典中。defaultdict 會自動為任何不存在的鍵初始化一個預設值。

語法

groups = defaultdict(list)
groups[item].append(item)

這裡,語法使用 collections 模組中的 defaultdict() 函式建立一個名為 groups 的 defaultdict 物件,其預設值為一個空列表。鍵 (item) 用於訪問 groups 字典中與該鍵關聯的列表,並將該專案追加到列表中。

示例

在下面的示例中,我們從 collections 模組匯入 defaultdict 類。我們初始化一個名為 groups 的 defaultdict,其預設值為一個空列表。然後,我們遍歷輸入列表 lst 中的每個專案。對於每個專案,我們訪問 groups 字典中的鍵,並將該專案追加到關聯的列表中。

from collections import defaultdict

def group_list_to_dict(lst):
    groups = defaultdict(list)
    for item in lst:
        groups[item].append(item)
    return groups

my_list = [1, 2, 3, 2, 4, 1, 5, 4, 3]
result = group_list_to_dict(my_list)
print(result)

輸出

defaultdict(<class 'list'>, {1: [1, 1], 2: [2, 2], 3: [3, 3], 4: [4, 4], 5: [5]})

方法 3:使用 itertools 模組中的 groupby

Python 中的 itertools 模組提供了一個強大的函式 groupby,它允許我們將可迭代物件中連續的相似元素分組。我們可以利用此函式對列表中的值進行分組,並將它們轉換為字典。

語法

list_name.append(element)

這裡,append() 函式將作為引數傳遞的元素新增到應用 append() 函式的列表中。

itertools.groupby(iterable, key=None)

這裡,可迭代物件和可選鍵作為引數傳遞。可迭代物件可以是任何元素集合。它返回一個迭代器,該迭代器生成包含可迭代物件中連續鍵和組的元組。鍵函式確定分組標準。

示例

在下面的示例中,我們從 itertools 模組匯入 groupby 函式。我們初始化一個名為 groups 的空字典。然後,我們遍歷 groupby 物件,它返回鍵和一組具有相同值的連續專案。對於每個鍵和組,我們將該組轉換為列表,並將其作為 groups 字典中該鍵的值。

from itertools import groupby

def group_list_to_dict(lst):
    groups = {}
    for key, group in groupby(lst):
        groups[key] = list(group)
    return groups

my_list = [1, 2, 3, 2, 4, 1, 5, 4, 3]
result = group_list_to_dict(my_list)
print(result)

輸出

{1: [1], 2: [2], 3: [3], 4: [4], 5: [5]}

結論

在本文中,我們討論瞭如何在 Python 中使用不同的方法將相似值列表分組到字典中。我們討論了使用迴圈和條件語句、使用 collections 模組中的 defaultdict 以及使用 itertools 模組中的 groupby。每種方法都有其自身的優勢,方法的選擇取決於手頭的任務。

更新於: 2023-07-19

1K+ 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.