1.6 在字典中将键映射到多个值上

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值