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