Python 中具有多個值的字典

Hemank Mehtani 2023年1月30日 2021年10月2日
  1. 使用使用者定義的函式向字典中的鍵新增多個值
  2. 使用 defaultdict 模組將多個值新增到字典中的鍵
  3. 使用 setdefault() 方法將多個值新增到字典中的特定鍵
Python 中具有多個值的字典

Python 中的字典以鍵值對的形式構成一組元素。通常,我們對字典中的鍵只有單個值。

但是,我們可以將鍵的值作為列表之類的集合。這樣,我們可以在字典中為一個特定的鍵有多個元素。

例如,

d = {'a': [1,2],
    'b': [2,3],
    'c': [4,5]}
print(d)

輸出:

{'a': [1, 2], 'b': [2, 3], 'c': [4, 5]}

本教程將討論在 Python 中將多個值作為列表附加到字典中的不同方法。

使用使用者定義的函式向字典中的鍵新增多個值

我們可以建立一個函式來在字典中附加鍵值對,值是一個列表。

例如,

def dict1(sample_dict, key, list_of_values):
    if key not in sample_dict:
        sample_dict[key] = list()
    sample_dict[key].extend(list_of_values)
    return sample_dict

word_freq = {'example': [1, 3, 4, 8, 10],
             'for': [3, 10, 15, 7, 9],
             'this': [5, 3, 7, 8, 1],
             'tutorial': [2, 3, 5, 6, 11],
             'python': [10, 3, 9, 8, 12]}
word_freq = dict1(word_freq, 'tutorial', [20, 21, 22])
print(word_freq)

輸出:

{'example': [1, 3, 4, 8, 10], 'for': [3, 10, 15, 7, 9], 'this': [5, 3, 7, 8, 1], 'tutorial': [2, 3, 5, 6, 11, 20, 21, 22], 'python': [10, 3, 9, 8, 12]}

請注意,在上面的程式碼中,我們建立了一個函式 dict1,其中 sample_dictkeylist_of_values 作為函式內的引數。extend() 函式將附加一個列表作為字典中鍵的值。

使用 defaultdict 模組將多個值新增到字典中的鍵

defaultdict 是集合模組的一部分。它也是 dict 類的子類,它返回類似字典的物件。對於不存在的鍵,它會給出一個預設值。

defaultdictdict 具有相同的功能,除了 defaultdict 從不引發 keyerror

我們可以使用它將元組集合轉換為字典。我們將預設值指定為列表。因此,無論何時遇到相同的鍵,它都會將該值附加為列表。

例如,

from collections import defaultdict
s = [('rome', 1), ('paris', 2), ('newyork', 3), ('paris', 4), ('delhi', 1)]
d = defaultdict(list)
for k, v in s:
    d[k].append(v)
sorted(d.items())
print(d)

輸出:

defaultdict(<class 'list'>,
            {'rome': [1],
             'paris': [2, 4], 
             'newyork': [3],
             'delhi': [1]
            }) 

使用 setdefault() 方法將多個值新增到字典中的特定鍵

setdefault() 方法用於為鍵設定預設值。當鍵存在時,它返回一些值。否則,它會插入具有預設值的鍵。鍵的預設值為 none。

我們將使用此方法將列表附加為鍵的值。

例如,

s = [('rome', 1), ('paris', 2), ('newyork', 3), ('paris', 4), ('delhi', 1)]
data_dict = {}
for x in s:
    data_dict.setdefault(x[0],[]).append(x[1])
print(data_dict)

輸出:

{'rome': [1], 'paris': [2, 4], 'newyork': [3], 'delhi': [1]}

相關文章 - Python Dictionary