📅  最后修改于: 2023-12-03 15:08:56.421000             🧑  作者: Mango
在 Python 中,一个键在 dict 中只能对应一个值。但是,有时候我们需要将一个键与多个值关联起来。这时,我们可以使用 Python 的内置库 collections
中的 defaultdict
实现。
defaultdict
是 dict
的一个子类,它重载了一个方法并添加了一个可写的实例变量。它用于当访问一个不存在的键时,返回一个默认值而非引发 KeyError
异常。
具体而言,在创建 defaultdict
对象时,需要传递一个函数作为默认值。当访问一个不存在的键时,该函数将返回该键的默认值。如果不传递函数,则默认值为 None
。
下面是一个例子:
from collections import defaultdict
my_dict = defaultdict(list)
my_dict["a"].append(1)
my_dict["a"].append(2)
print(my_dict["a"]) # [1, 2]
在上面的代码中,我们创建了一个 defaultdict
对象 my_dict
,其中的默认值是空列表 list()
。然后我们向 my_dict
添加两个键值对,键为 a
,值分别是 1
和 2
。最后,我们打印访问键为 a
的值,发现输出的是包含 1
和 2
的列表。
可以看到,当我们首次访问键为 a
的值时,返回的是一个空列表。然后我们向列表中添加了两个元素。再次访问键为 a
的值时,返回的是包含 1
和 2
的列表。
下面是一个示例程序,展示如何在 Python 中为 dict 中的键设置多个值:
from collections import defaultdict
def add_key_value(my_dict, key, value):
my_dict[key].append(value)
my_dict = defaultdict(list)
add_key_value(my_dict, "a", 1)
add_key_value(my_dict, "a", 2)
add_key_value(my_dict, "a", 3)
add_key_value(my_dict, "b", 4)
print(my_dict) # defaultdict(<class 'list'>, {'a': [1, 2, 3], 'b': [4]})
在上面的代码中,我们定义了一个函数 add_key_value
,接受三个参数 my_dict
、key
和 value
。函数的作用是向字典 my_dict
中的键为 key
的值中添加元素 value
。
然后我们创建了一个 defaultdict
对象 my_dict
。接着,我们调用 add_key_value
函数分别向 my_dict
中添加三个键值对,键分别为 a
,值分别是 1
、2
和 3
,以及一个键值对,键为 b
,值为 4
。最后,我们打印 my_dict
字典的内容,输出的是包含键值对 {'a': [1, 2, 3], 'b': [4]}
的 defaultdict
对象。
可以看到,通过使用 defaultdict
,我们很容易地向字典中的键设置多个值。