首页 > 编程语言 >简单介绍Python中如何给字典设置默认值

简单介绍Python中如何给字典设置默认值

时间:2023-03-03 12:12:43浏览次数:52  
标签:aa defaultdict get Python key 默认值 hello 字典

这篇文章主要介绍了Python中如何给字典设置默认值问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
Python字典设置默认值

我们都知道,在 Python 的字典里边,如果 key 不存在的话,通过 key 去取值是会报错的。

>>> aa = {'a':1, 'b':2}
>>> aa['c']
Traceback (most recent call last):
  File "", line 1, in 
KeyError: 'c'

如果我们在取不到值的时候不报错而是给定一个默认值的话就友好多了。

初始化的时候设定默认值(defaultdict 或 dict.fromkeys)
>>> from collections import defaultdict
>>> aa = defaultdict(int)
>>> aa['a'] = 1
>>> aa['b'] = 2
>>> aa
defaultdict(<class 'int'="">, {'a': 1, 'b': 2})
>>> aa['c']
0
>>> aa
defaultdict(<class 'int'="">, {'a': 1, 'b': 2, 'c': 0})
>>> aa = dict.fromkeys('abc', 0)
>>> aa
{'a': 0, 'b': 0, 'c': 0}

defaultdict(default_factory) 中的 default_factory 也可以传入自定义的匿名函数之类的哟。

>>> aa = defaultdict(lambda : 1)
>>> aa['a']
1
获取值之前的时候设定默认值(setdefault(key, default))

这里有个比较特殊的点:只要对应的 key 已经被设定了值之后,那么对相同 key 再次设置默认值就没用了。

因此,如果你在循环里边给一个 key 重复设定默认值的话,那么也只会第一次设置的生效。

>>> aa = {'a':1, 'b':2}
>>> aa
{'a': 1, 'b': 2}
>>> aa.get('c')
>>> aa.setdefault('c', 'hello')
'hello'
>>> aa.get('c')
'hello'
>>> aa
{'a': 1, 'b': 2, 'c': 'hello'}
>>> aa.setdefault('c', 'world')
'hello'
>>> aa.get('c')
'hello'
获取值的时候设定默认值(dict.get(key, default))
>>> aa = {'a':1, 'b':2}
>>> aa
{'a': 1, 'b': 2}
>>> aa['c']
Traceback (most recent call last):
  File "", line 1, in 
KeyError: 'c'
>>> aa.get('c')
>>> aa
{'a': 1, 'b': 2}
>>> aa.get('c', 'hello')
'hello'
>>> aa.get('b')
2
python创建带默认值的字典

防止keyerror创建带默认值的字典

from collections import defaultdict
data = collections.defaultdict(lambda :[])

原文来自:https://www.jb51.net/article/276017.htm

本文地址:https://www.linuxprobe.com/python-linux-key.html 

Linux命令大全:https://www.linuxcool.com/

Linux系统大全:https://www.linuxdown.com/

红帽认证RHCE考试心得:https://www.rhce.net/

标签:aa,defaultdict,get,Python,key,默认值,hello,字典
From: https://www.cnblogs.com/linuxpro/p/17175123.html

相关文章

  • python中的__name__变量
    一、__name__1.1这个__name__拿来做什么的?__name__是一个特别的变量,当我们与模块交互时使用,可以让我们区分哪些模块(常指:包和库)导入或者不导入。1.2 这个__name__......
  • python初始化类出现takes no arguments
    初始化类的时候出现了takesnoarguments一般这种问题都是因为初始化函数的问题,例如definit(self):defint(self,name):definit_(self,name):def__init(self,name......
  • Python爬虫之用Selenium做爬虫
    我们在用python做爬虫的时候,除了直接用requests的架构,还有Scrapy、Selenium等方式可以使用,那么今天我们就来聊一聊使用Selenium如何实现爬虫。Selenium是什么?Selenium是......
  • 轻量级CI/CD发布部署环境搭建及使用_05_安装宿主机环境(jdk、nodejs、maven、python2)
    轻量级CI/CD发布部署环境搭建及使用_05_安装宿主机环境(jdk、nodejs、maven、python2)尽自己的绵薄之力,为开源技术分享添砖加瓦本篇幅较多,请按步骤实验安装,截图中涉及的......
  • 180207 python tqdm进度条的使用
    ​​python的Tqdm模块​CodeOnefromtqdmimporttqdmfromtimeimportsleepforiintqdm(range(1000)):sleep(0.1)passCodeTwofromtqdmimporttqdmfrom......
  • python+playwright 学习-20.文件下载expect_download()
    前言文件下载操作expect_download()当浏览器上下文关闭时,所有属于浏览器上下文的下载文件都会被删除。下载开始后会发出下载事件。下载完成后,下载路径可用:withpage.e......
  • python+playwright 学习-19.监听dialog事件-优雅处理对话框
    前言网页上的alert弹出框你不知道什么时候弹出来,selenium处理alert弹出框的方式是先判断有没alert再处理,并且只能处理这一次。playwright框架可以监听dialog事件,不管......
  • Python爬虫之Scrapy制作爬虫
    前几天我有用过Scrapy架构编写了一篇爬虫的代码案例深受各位朋友们喜欢,今天趁着热乎在上一篇有关Scrapy制作的爬虫代码,相信有些基础的程序员应该能看的懂,很简单,废话不多说......
  • Python数据存储
    在运算过程中,得到的经验和模型都是算法的重要结果。直接把数据输入到对应的地方保证了各个模块之间的隔离。numpy数组保存numpy的强大之处有目共睹.npynumpy.save("f......
  • 2023年第 14期《Python接口自动化+Playwright 》课程,4月2号开学(课程全面升级!)!
    2023年第14期《python接口web自动化+测试开发》课程,4月2号开学(课程全面升级!)主讲老师:上海-悠悠上课方式:微信群视频在线教学,方便交流本期上课时间:2023年4月2号-2023年......