字典是一种关联容器,每个键都映射到一个单独的值上,如果想让键映射到多个值,需要将这多个值保存到另一个容器如列表或者集合中。要使用列表或者集合取决于应用的意图,如果希望保留应用的插入顺序就用列表,如果希望不重复就用集合。
为了能方便的创建这样的字典,可以使用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)