60D6 – dict 和 set 的 15 个经典使用例子

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']})
页面: 1 2 3 4 5 6

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注