字典是一种关联容器,每个键都映射到一个单独的值上。如果想让键值映射到多个值,需要将这多个值保存到另一个容器或者集合中。例如,可能会像这样创建字典:
>>> d={
'a':[1,2,3],
'b':[4,5]
}
为了能方便的创建这样的字典,可以利用collection模块中的defaultdict类。defaultdict的一个特点就是它会自动初始化第一个值,这样只需关注添加元素即可。例如:
>>> from collections import defaultdict
>>> d=defaultdict(list)
>>> d['a'].append(1)
>>> d['a'].append(2)
>>> d['b'].append(4)
>>> d
defaultdict(<class 'list'>, {'a': [1, 2], 'b': [4]})
原则上,构建一个一键多值字典很容易。但是如果试着自己对第一个值做初始化操作,这就会变得很杂乱。例如,可能会写下这样的代码:
d={}
for key,value in pairs:
if key not in d:
d[key]=[]
d[key].append(value)
使用defaultdict后代码会清晰很多:
d=defaultdict(list)
for key,value in pairs:
d[key].append(value)