需求
在创建字典时不知道键(key)的值,但想要在每次接收到新的数字时将它们追加到相应的列表中
示例代码
from collections import defaultdict
# 创建一个默认字典,其中键是字符串,值是列表
my_dict = defaultdict(list)
# 假设你接收到了一些数字和它们对应的键
keys_and_numbers = [
("key1", 1),
("key2", 2),
("key1", 3),
("key3", 4),
("key2", 5)
]
# 遍历键和数字的列表,将数字追加到对应的键的列表中
for key, number in keys_and_numbers:
my_dict[key].append(number)
# 打印字典以查看结果
print(my_dict)
输出结果
defaultdict(<class 'list'>, {'key1': [1, 3], 'key2': [2, 5], 'key3': [4]})
代码解析
在这个示例中,我们首先从collections模块导入了defaultdict。然后,我们创建了一个默认字典my_dict,其默认值为列表(list)。这意味着当我们尝试访问一个不存在的键时,defaultdict会自动为我们创建一个新的空列表。
接下来,我们定义了一个包含键和数字对的列表keys_and_numbers。我们遍历这个列表,对于每一对键和数字,我们使用append方法将数字添加到字典中相应键的列表中。
最后,我们打印出my_dict来查看结果。你可以看到,每个键都对应一个包含所有相关数字的列表。
这种方法的好处是,你不需要在添加数字之前检查键是否存在于字典中。defaultdict会自动为你处理这一切。