1.6 在字典中将键映射到多个值上

字典是一种关联容器,每个键都映射到一个单独的值上,如果想让键映射到多个值,需要将这多个值保存到另一个容器如列表或者集合中。要使用列表或者集合取决于应用的意图,如果希望保留应用的插入顺序就用列表,如果希望不重复就用集合。
为了能方便的创建这样的字典,可以使用collections模块中的defaultdict类,可以构造的时候就把内部结构和数据类型弄好,方便使用

from collections import defaultdict

d = defaultdict(list)
print(d)

d['a'].append(1)
d['a'].append(2)
d['b'].append(4)
print(d)

d = defaultdict(set)
d['a'].add(1)
d['a'].add(2)
d['b'].add(3)
print(d)

也可以用字典自带的setdefault,就是比较麻烦

d = dict()
print(d)

d.setdefault('a',[]).append(1)
print(d)

这种骚操作主要用于简化对字典内第一个值初始化的情况
老的麻烦写法:

 d = dict()

for key, value in pairs:
    if key not in d:
        d[key]=[]
    d[key].append(value)

新的简化写法

from collections import defaultdict

d = defaultdict(list)

for key, value in pairs:
    d[key].append(value)
上一篇:python – collections.defaultdict线程安全吗?


下一篇:【python】collections模块