Python - 將元組列表分組到字典中
在Python中,我們可以使用不同的方法將元組列表分組到字典中,例如使用for迴圈和條件語句、使用collections模組中的defaultdict類以及使用itertools模組中的groupby()函式。本文將探討所有這些方法,並實現它們以將元組列表分組到字典中。
方法一:使用for迴圈和條件語句
此方法涉及使用for迴圈迭代元組列表。我們將檢查字典中是否存在鍵,並將相應的元組作為值新增到該鍵。如果鍵不存在,我們將在字典中建立一個新的鍵值對。
語法
list_name.append(element)
這裡,append()函式是用於向list_name結尾新增元素的列表方法。它透過將指定的元素作為新項新增到列表中來修改原始列表。
示例
在下面的示例中,我們有一個名為data的元組列表。我們初始化一個名為result的空字典。我們使用for迴圈迭代data列表中的每個元組。對於每個元組,我們使用索引提取鍵和值。如果鍵已存在於result字典中,我們將值附加到與該鍵關聯的現有列表中。否則,我們將在result字典中建立一個新的鍵值對,鍵為提取的鍵,值為包含提取值的列表。最後,我們列印結果字典。
data = [('apple', 5), ('banana', 3), ('apple', 2), ('cherry', 7), ('banana', 1)]
result = {}
for item in data:
key = item[0]
value = item[1]
if key in result:
result[key].append(value)
else:
result[key] = [value]
print(result)
輸出
{'apple': [5, 2], 'banana': [3, 1], 'cherry': [7]}
方法二:使用collections模組中的defaultdict類
此方法使用collections模組中的defaultdict類。defaultdict為不存在的鍵提供預設值,使其方便資料分組。
語法
groups = defaultdict(list)
這裡,語法使用collections模組中的defaultdict()函式初始化一個名為groups的defaultdict物件,其預設值為一個空列表。第二行程式碼使用鍵(item)訪問groups字典中與該鍵關聯的列表,並將item附加到該列表。
示例
在下面的示例中,我們從collections模組匯入defaultdict類。我們將result變數初始化為一個defaultdict,其預設值設定為一個空列表。其餘程式碼與第一種方法類似,我們迭代data列表中的每個元組,提取鍵和值,並將值附加到result字典中相應的鍵。最後,在列印之前,我們使用dict()函式將result defaultdict轉換為常規字典。
from collections import defaultdict
data = [('apple', 5), ('banana', 3), ('apple', 2), ('cherry', 7), ('banana', 1)]
result = defaultdict(list)
for item in data:
key = item[0]
value = item[1]
result[key].append(value)
print(dict(result))
輸出
{'apple': [5, 2], 'banana': [3, 1], 'cherry': [7]}
方法三:使用itertools模組中的groupby()函式
此方法涉及使用itertools模組中的groupby()函式。groupby()函式根據鍵函式對可迭代物件的元素進行分組。
語法
groups[key] = list(group)
這裡,itertools模組中的groupby()函式迭代groupby物件。該函式返回鍵和一組具有相同值的連續項。然後使用鍵和組在groups字典中建立鍵值對,其中鍵是唯一值,值是分組項的列表。
示例
在下面的示例中,我們從itertools模組匯入groupby()函式。在使用groupby()之前,我們使用lambda函式根據鍵對data列表進行排序。此步驟至關重要,因為groupby()期望具有相同鍵的連續元素在可迭代物件中相鄰。然後,我們迭代groupby()生成的組。對於每個組,我們提取鍵並建立一個與該鍵關聯的值列表。最後,我們將鍵值對儲存在result字典中並列印它。
from itertools import groupby
data = [('apple', 5), ('banana', 3), ('apple', 2), ('cherry', 7), ('banana', 1)]
result = {}
data.sort(key=lambda x: x[0]) # Sort the data based on the key
for key, group in groupby(data, key=lambda x: x[0]):
result[key] = [item[1] for item in group]
print(result)
輸出
{'apple': [5, 2], 'banana': [3, 1], 'cherry': [7]}
結論
在本文中,我們討論瞭如何使用Python中的各種方法將元組列表分組到字典中。我們探討了三種方法:使用for迴圈和條件語句,使用collections模組中的defaultdict類以及使用itertools模組中的groupby()函式。每種方法都為任務提供了一種解決方案,選擇哪種方法取決於個人喜好和具體需求。
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP