6.3.7 setdefault方法

setdefault方法用于设置key的默认值。该方法接收两个参数,第1个参数表示key,第2个参数表示默认值。如果key在字典中不存在,那么setdefault方法会向字典中添加这个key,并用第2个参数作为key的值。该方法会返回这个默认值。如果未指定第2个参数,那么key的默认值是None。如果字典中已经存在这个key,setdefault不会修改key原来的值,而且该方法会返回key原来的值。

[例 6.11] 本例演示了如何使用setdefault方法向字典中添加新的key-value对,以及获取原有key的值。

#定义一个空字典
dict = {}print(dict.setdefault('name','Bill'))
#向字典中添加一个名为name的key,默认值是Bill,输出结果:Billprint(dict)
#输出结果:{'name': 'Bill'}print(dict.setdefault('name','Mike'))
#并没有改变name的值,输出结果:Billprint(dict)
#输出结果:{'name': 'Bill'}#向字典中添加一个名为age的key,默认值是None,输出结果:None
print(dict.setdefault('age'))print(dict)
#输出结果:{'name': 'Bill', 'age': None}

输出结果:

Bill
{'name': 'Bill'}
Bill
{'name': 'Bill'}
None
{'name': 'Bill', 'age': None}

可以看到,上面的代码中使用setdefault方法第1次设置name时,向字典中添加了一个新的key-value对,而第2次设置name时,字典元素并没有任何变化。而setdefault方法返回了第1次设置name的值(Bill),也就是name原来的值。

可能会有人有这样的疑问:这个setdefault方法不就是向字典中添加一个key-value对吗?这里所谓的默认值(setdefault方法第2个参数)其实就是key的值。与dict[key]=value有什么区别?

其实如果key在字典中不存在,setdefault(key,value)方法与dict[key] = value形式是完全一样的,区别就是当key在字典中存在的情况下。setdefault(key,value)并不会改变原值,而dict[key] = value是会改变原值的。所以setdefault方法主要用于向字典中添加一个key-value对,而不是修改key对应的值。

Python进阶之路 setdefault方法相关推荐

  1. Python 进阶之路 (九) 再立Flag, 社区最全的itertools深度解析(上)

    前言 大家好,今天想和大家分享一下我的itertools学习体验及心得,itertools是一个Python的自带库,内含多种非常实用的方法,我简单学习了一下,发现可以大大提升工作效率,在sf社区内没 ...

  2. Python 进阶之路 (十二) 尾声即是开始

    Python进阶之路总结 大家好,我的<< Python进阶之路>>到这一期就到此为止了,和 <<Python 基础起步>>不同,在掌握了一些基础知识后 ...

  3. Python 进阶之路 (八) 最用心的推导式详解 (附简单实战及源码)

    什么是推导式 大家好,今天为大家带来问我最喜欢的Python推导式使用指南,让我们先来看看定义~ 推导式(comprehensions)是Python的一种独有特性,推导式是可以从一个数据序列构建另一 ...

  4. 毛毛Python进阶之路6——MySQL 数据库(二)

    毛毛Python进阶之路6--MySQL 数据库(二) 一.对于自增 show create table 表名; # 查看表是怎样创建的. show create table 表名\G; #将某个表旋 ...

  5. Python字典中的setdefault方法

    文章目录 1. setdefault()方法 2. setdefault()方法构造value值为列表/字典的字典 2.1 构造value值为列表的字典 2.2 构造value值为字典的字典 3. s ...

  6. Python进阶之路 静态方法和类方法

    静态方法和类方法 Python类包含三种方法:实例方法.静态方法和类方法.其中,实例方法在前面的章节已经多次使用了.要想调用实例方法,必须要实例化类,然后才可以调用.也就是说,调用实例化方法需要类的实 ...

  7. Python进阶之路第一话之python引力

    Python的魅力:我来引你中毒 我不想说一些Python是世界最好的编程语言之类的鬼话,在我看来,每一种编程语言都有他们各自擅长的领域和不擅长的领域.举个例子,我用一根针,来削铅笔,很费劲不能实现, ...

  8. Python学习day07 - Python进阶(1) 内置方法

    Python学习day07-Python进阶(1)数据类型的内置方法一. 数字类型内置方法1. 整型内置方法1.1 作用1.2 定义方法1.3 内置方法1.4 存在一个还是多个值1.5 有序or无序1 ...

  9. 《正规军的Python进阶之路|Python技能树测评》

    通过<Python技能树测评>判断自己在哪个级别: Python技能树测评[https://bbs.csdn.net/skill/python] 完整的[Python]学习体系,给你正规军 ...

最新文章

  1. postgreSQL外键引用查询 查询外键被那些表占用
  2. jQuery的$.fn使用
  3. java编写存钱_用Java编写一个简单的存款
  4. CentOS下的抓包服务:rpcapd(WinPcap)
  5. CRM Fiori pipeline应用的背景色问题
  6. 训练日志 2019.8.23
  7. Helper Devise: could not find the `Warden::Proxy` instance on request environment
  8. 微服务学习之服务治理、服务注册与发现、Eureka【Hoxton.SR1版】
  9. 从零开始学 Web 之 CSS(三)链接伪类、背景、行高、盒子模型、浮动
  10. Javascript高级程序设计第四版详细测评
  11. 金笛JDMAIL打造公务员邮件系统
  12. hibernate官网下载
  13. u校园答题技巧 答题助手 最新可用
  14. 如何删除itunes中的ipa安装包
  15. webpack ——自定义Loader,将i18n英文单词首字母转大写
  16. win10无法打印网页:打印机遇到异常配置问题0x8007007e 的解决方法
  17. Helm和kustomize
  18. kcl计算机科学与技术研究生,KCL的Data Science「伦敦大学国王学院数据科学理学硕士」...
  19. Win10常用cmd命令学习(验证性实验)
  20. 整数转罗马数字(C++)

热门文章

  1. PDF Password Remover 软件及其密钥
  2. 微信小程序分享带参数
  3. 科达飞讯SDK出现 20021,引擎错误
  4. 创新实训——飞讯(五)
  5. 我利用业余时间通过写作挣了3个顶配Mac Pro
  6. 读懂百句话,胜过十年窗
  7. 蒙特梭利三段卡---叶子
  8. xshell打开多个窗口_winscp使用教程xshell,winscp使用教程xshell,软件详情对比
  9. CentOS 7 升级安装 Python 3.9 版本
  10. 归并排序——求逆序对个数