1.6字典中将键映射到多个值上
- 字典是一种关联容器,每个key都会映射到一个单独的value上,若想让key映射多个值,需要将这多个值存到另一个容器中如,列表或结合中。
>>> a ={ 'b': [1,2,3],'c':[1,2]}
>>> d ={ 'b': [1,2,3],'c':[1,2]}
>>>
- 如果希望保留元素顺序,则用列表
- 如果希望消除重复元素,则用集合
- 如果想要方便的创建上述key映射多个值的字典,可以使用collections模块中的defaultdict类,defaultdict的一个特点就是会自动初始化第一个值,这样我们就只专注添加元素即可,如:
>>> from collections import defaultdict
>>> d = defaultdict(list)
>>> d['a'].append(1)
>>> d['a'].append(2)
>>> d['b'].append(5)
>>> d
defaultdict(<class 'list'>, {'a': [1, 2], 'b': [5]})
>>> d = defaultdict(set)
>>> d['a'].add(1)
>>> d['a'].add(2)
>>> d['a'].add(2)
>>> d['b'].add(5)
>>> d
defaultdict(<class 'set'>, {'a': {1, 2}, 'b': {5}})
>>>
- 使用defaultdict的类那个一个好处,平时我们构建一个字典时可能这样写
>>> d ={}
>>> for key,value in p:
... if key not in d:
... d[key]=[]
... d[key].append(value)
...
>>> d = defaultdict(list)
>>> for key,value in p:
... d[key].append(value)