Python 字典中的重複鍵
在程式設計領域,對應將唯一鍵對應到字典的值來組織資料,這被證明是非常寶貴的。然而,標準的Python字典實作遵循嚴格的原則:每個鍵在字典中必須保持唯一。在處理資料集中涉及重複鍵的場景時,此約束帶來了挑戰。
使用重複鍵建立字典
假設我們遇到一個包含重複汽車註冊的文字檔案號碼,每個號碼都與不同的資訊相關聯,例如司機姓名、電話分機和停車位置。任務是建立一個字典,以註冊號碼為鍵,對應的資料為值。以下程式碼片段說明了一種常見方法:
data_dict = {} data_list = [] def createDictionaryModified(filename): path = "C:\Users\user\Desktop" basename = "ParkingData_Part3.txt" filename = path + "//" + basename file = open(filename) contents = file.read() print(contents, "\n") data_list = [lines.split(",") for lines in contents.split("\n")] for line in data_list: regNumber = line[0] name = line[1] phoneExtn = line[2] carpark = line[3].strip() details = (name, phoneExtn, carpark) data_dict[regNumber] = details print(data_dict, "\n") print(data_dict.items(), "\n") print(data_dict.values())
但是,由於 Python 的預設字典行為,此程式碼面臨一個限制:重複的鍵會導致覆蓋先前的值。為了避免這個問題,一個解決方案是在字典中儲存列表或集合。
使用 Collections.defaultdict
Python 標準庫為此目的提供了一個有用的工具:集合.defaultdict。此類別使用預設工廠初始化字典,確保不存在的鍵將建立新列表或集合(取決於工廠參數)。
from collections import defaultdict data_dict = defaultdict(list)
要使用重複鍵填充字典,只需將原來的賦值語句:
data_dict[regNumber] = details
替換為:
data_dict[regNumber].append(details)
這個策略有效地創建了一個列表字典,其中每個鍵對應於關聯值的列表。透過利用 collections.defaultdict,您可以成功處理 Python 字典中的重複鍵。
以上是創建Python字典時如何處理重複鍵?的詳細內容。更多資訊請關注PHP中文網其他相關文章!