14. 一键对多值字典
一键对多个值的实现方法 1,按照常规思路,循序渐进:
In [85]: d = {}
...: lst = [(1,'apple'),(2,'orange'),(1,'compute')]
...: for k,v in lst:
...: if k not in d:
...: d[k]=[]
...: d[k].append(v)
In [86]: d
Out[86]: {1: ['apple', 'compute'], 2: ['orange']}
以上方法,有一处 if 判断 ,确认 k 是不是已经在返回结果字典 d 中。
不是很优雅!
可以使用 collections 模块中的 defaultdict,它能创建属于某个类型的自带初始值的字典。使用起来更加方便:
In [87]: from collections import defaultdict
...:
...: d = defaultdict(list)
...: for k,v in lst:
...: d[k].append(v)
In [88]: d
Out[88]: defaultdict(list, {1: ['apple', 'compute'], 2: ['orange']})