如何给Python dict设置默认的返回值(value)

 两种方法:

dict.get(key , default=None)

dict.setdefault(key, default=None)

  • 以上二者调用返回的结果完全相同,都是当dict中不含有该键时,返回后面你给的默认值;
  • 但二者也有区别——get方法不会改变dict,而setdefault方法会在一次调用后向dict中添加这个之前不存在的键值对

请见代码:

dicts = {5:'Garnett',11:'Irving',0:'Tatum',7:'Brown',20:'Hayward'}
dicts.get(36,'Smart')
>>> 'Smart'
dicts
>>> {5: 'Garnett', 11: 'Irving', 0: 'Tatum', 7: 'Brown', 20: 'Hayward'}  # dicts没有变化,我钢哥没被加进来

dicts.setdefault(42,'Horford')
>>> 'Horford'
dicts
>>> {5: 'Garnett',
     11: 'Irving',
     0: 'Tatum',
     7: 'Brown',
     20: 'Hayward',
     42: 'Horford'}
       # dicts被改变了,伙夫被加了进来

defaultdict

如上,在Python的collections模块中,有defaltdict容器,这个容器可以在该容器中不含有某个键的时候直接返回你默认设置的值

代码如下:

from collections import defaultdict

dict1 = defaultdict(lambda :'Rozier')
dict1[12]
>>> 'Rozier'

dict1[13]
>>> 'Rozier'

dict1
>>> defaultdict(<function __main__.<lambda>()>, {13: 'Rozier', 12: 'Rozier'})

如代码所示,defaultdict可以接收一个函数,这个函数专门用于对不存在于defaultdict中的key进行处理,得到初始化的value 。我们这里传入了最简单的一个函数,不论传入的key为何值,返回值均是“Rozier”(返回一个太子)。所以后面可见,不论传入的时12还是13,结果都会返回一个初始化的默认值‘Rozier’,而不会抛出异常。同时defaultdict中也存入了者两组键值对。

 

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_illusion_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值