如何用 Python 建立具有重複鍵的字典?
在 Python 中,字典不允許重複鍵或重複的鍵。因此,我們可以使用來自 集合 模組的 defaultdict。因為它可以以列表或其他任何資料結構的形式儲存同一鍵的多個值。
'collections' 模組中的 'defaultdict'
內建 dict 類的子類,允許我們為不存在的鍵提供預設值,稱為 defaultdict。
返回新鍵的預設值的函式稱為 '預設工廠',如果要傳遞此預設工廠,可以使用 列表,它允許在同一鍵下儲存多個值。
處理重複鍵
建立具有重複鍵的字典所涉及的步驟如下。
-
建立一個以列表作為 預設工廠 的 defaultdict。
-
考慮一個包含重複鍵的元組列表,並將它們轉換為 defaultdict。
-
將 defaultdict 轉換為普通字典
以列表作為預設工廠的 'defaultdict'
我們首先匯入 defaultdict 並建立一個 defaultdict(list) 的例項,它在第一次遇到每個鍵時初始化一個空列表。
from collections import defaultdict d = defaultdict(list)
初始化列表並轉換為 defaultdict
考慮一個包含重複鍵的元組列表 'l'。使用鍵來追加值並在該元組列表中迴圈。
l = [(1, 111), (2, 222), (3, 333), (1, 'aaa'), (2, 'bbb'), (3, 'ccc')] for k, v in l: d[k].append(v)
將 defaultdict 轉換為普通字典
使用 dist() 方法,defaultdict 將轉換為普通字典。
dict_d = dict(d) print(dict_d)
最終示例
透過使用此方法,您可以以類似字典的結構在同一鍵下排列多個值。
from collections import defaultdict # Create defaultdict d = defaultdict(list) # Step 2: List of tuples with duplicate keys l = [(1, 111), (2, 222), (3, 333), (1, 'aaa'), (2, 'bbb'), (3, 'ccc')] # Add values to the defaultdict for k, v in l: d[k].append(v) # Convert defaultdict to a regular dictionary result = dict(d) print(result)
輸出
{1: [111, 'aaa'], 2: [222, 'bbb'], 3: [333, 'ccc']}
廣告