Python 中具有多个值的字典

Hemank Mehtani 2023年1月30日
  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