5.1.5 setdefault()方法

本文介绍了Python字典的setdefault()方法,用于在字典中设置默认值,避免KeyError。通过示例展示了如何使用setdefault()更新字典,以及在一个计算字符串中字符出现次数的程序中应用此方法。
摘要由CSDN通过智能技术生成

setdefault()方法
你常常需要为字典中某个键设置一个默认值,当该键没有任何值时使用它。代码看起来像这样:
spam  =  {'name':  'Pooka',  'age':  5} if  'color'  not  in  spam:
spam['color']  =  'black'
setdefault()方法提供了一种方式,在一行中完成这件事。传递给该方法的第一个参数,是要检查的键。第二个参数,是如果该键不存在时要设置的值。如果该键确实存在,方法就会返回键的值。在交互式环境中输
入以下代码:
>>>  spam  =  {'name':  'Pooka',  'age':  5}
>>>  spam.setdefault('color',  'black')
'black'
>>>  spam
{'color':  'black',  'age':  5,  'name':  'Pooka'}
>>>  spam.setdefault('color',  'white')
'black'
>>>  spam
{'color':  'black',  'age':  5,  'name':  'Pooka'}
第一次调用 setdefault()时,spam 变量中的字典变为{'color': 'black', 'age': 5, 'name': 
'Pooka'}。该方法返回值'black',因为现在该值被赋给键'color'。当 spam.setdefault('color', 
'white')接下来被调用时,该键的值“没有”被改变成'white',因为 spam 变量已经有名为'color'的键。
setdefault()方法是一个很好的快捷方式,可以确保一个键存在。下面有一个小程序,计算一个字符串中每个字符出现的次数。打开一个文件编辑器窗口,输入以下代码,保存为 
characterCount.py:
message  =  'It  was  a  bright  cold  day  in  April,  and  the  clocks  were  striking  
thirteen.' count  =  {}

for  character  in  message: count.setdefault(character,  0) count[character]  =  count[character]  
+  1

print(count)
程序循环迭代 message 字符串中的每个字符,计算每个字符出现的次数。setdefault()方法调用确保了键存在于 count  字典中(默认值是 0),这样在执行 
count[character]  = count[character] + 1 时,就不会抛出 KeyError 错误。程序运行时,输出如下:
{'  ':  13,  ',':  1,  '.':  1,  'A':  1,  'I':  1,  'a':  4,  'c':  3,  'b':  1,  'e':  5,  'd':  
3,  'g':  2,  'i':
6,  'h':  3,  'k':  2,  'l':  3,  'o':  2,  'n':  4,  'p':  1,  's':  3,  'r':  5,  't':  6,  'w':  
2,  'y':  1}
从输出可以看到,小写字母 c 出现了 3 次,空格字符出现了 13 次,大写字母 A出现了 1 次。无论 message 变量中包含什么样的字符串,这个程序都能工作,即使该字符串有上百万的字符!
 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

大飞哥软件自习室

希望支持

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

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

打赏作者

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

抵扣说明:

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

余额充值