如何用 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']}

更新於: 2024-10-17

5K+ 次檢視

啟動您的 職業生涯

透過完成課程獲得認證

開始
廣告