Python日知录|快速创建对应多个值的字典


经常会遇到这种情况,字典中的每个键需要对应的不仅仅是一个值,而是多个值。这种时候就需要将这些值封装到另一个数据结构中,比如列表或另一个字典。数据结构可能是这样的:

1
2
3
4
5
sample_dict = {
'a': [1, 2, 3],
'b': [2, 4, 6],
'c': [3, 6, 9],
}

这种稍复杂的数据结构如果手动处理必定比较麻烦。这时可以使用 collections 模块中的 defaultdict 来封装这种复杂的字典。 defaultdict 一个显著的特点,就是它会自动初始化每个键开始时对应的值,这样便可以很方便的添加元素了。

1
2
3
4
5
6
from collections import defaultdict

sample_dict = defaultdict(list)
sample_dict['a'] = [1, 2, 3]
sample_dict['b'].extend([2, 4, 6])
sample_dict['c'] += [3, 6, 9]

需要注意的是, defaultdict会将每个键对应的值初始化为一个默认的空数据结构,如果不需要这样的特性,可以使用字典的 setdefault() 方法来替代。

1
2
3
4
sample = {}
sample.setdefault('a', []).append(1)
sample.setdefault('a', []).append(2)
sample.setdefault('b', []).append(4)
谢谢支持!
0%