如何用Python建立帶有重複鍵的字典?


在Python中,字典不允許重複鍵。因此,我們可以使用來自Collections 模組的**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轉換為普通字典

使用`dict()`方法,將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+ 次瀏覽

啟動您的職業生涯

透過完成課程獲得認證

開始學習
廣告