这篇文章主要介绍了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/

简单介绍Python中如何给字典设置默认值的更多相关文章

  1. Swift语言中为外部参数设置默认值可变参数常量参数变量参数输入输出参数

    Swift语言中为外部参数设置默认值可变参数常量参数变量参数输入输出参数 7.4.4  为外部参数设置默认值 开发者也可以对外部参数设置默认值.这时,调用的时候,也可以省略参数传递本文选自Swift1 ...

  2. vue+elementUI中单选框el-radio设置默认值和唯一标识某个单选框

    vue+elementUI中单选框el-radio设置默认值 如果后台返回的单选框的值是number:单选框的lable需要设置成 :lable='0';如下: <el-form-item la ...

  3. Vue props中Object和Array设置默认值

    Vue中,在props中设置Object和Array的默认值 seller: { type: Object, default() { return {} } } seller: { type: Obj ...

  4. 转载:简单介绍Python中的try和finally和with方法

    用 Python 做一件很平常的事情: 打开文件, 逐行读入, 最后关掉文件; 进一步的需求是, 这也许是程序中一个可选的功能, 如果有任何问题, 比如文件无法打开, 或是读取出错, 那么在函数内需要 ...

  5. MVC3中给Html.TextAreaFor设置默认值(初始值)

    <div class="editor-field"> @Html.TextAreaFor(model => model.Comments) @Html.Valid ...

  6. 简单谈谈Python中的几种常见的数据类型

    简单谈谈Python中的几种常见的数据类型 计算机顾名思义就是可以做数学计算的机器,因此,计算机程序理所当然地可以处理各种数值.但是,计算机能处理的远不止数值,还可以处理文本.图形.音频.视频.网页等 ...

  7. 简单说明Python中的装饰器的用法

    简单说明Python中的装饰器的用法 这篇文章主要简单说明了Python中的装饰器的用法,装饰器在Python的进阶学习中非常重要,示例代码基于Python2.x,需要的朋友可以参考下   装饰器对与 ...

  8. python字典设置初始值setdefault()与get()

    L = ['you','me','you','me','you','me','you'] D = {} for i in L: D[i] += 1 print(D) 执行以下代码会发生错误 Trace ...

  9. python中函数的参数和返回值

    目录 函数 目标 01. 函数参数和返回值的作用 1.1 无参数,无返回值 1.2 无参数,有返回值 1.3 有参数,无返回值 1.4 有参数,有返回值 02. 函数的返回值 进阶 示例 -- 温度和 ...

  10. 《Entity Framework 6 Recipes》中文翻译系列 (14) -----第三章 查询之查询中设置默认值和存储过程返回多结果集

    翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 3-6在查询中设置默认值 问题 你有这样一个用例,当查询返回null值时,给相应属性 ...

随机推荐

  1. EndNote设置导出参考文献格式为中文国标GBT7714

    笔者使用的版本是最新的EndNote 20,其他版本大同小异. 依次打开:Tools -> Output Styles -> Open Style Manager.其他版本可能有差异,只要 ...

  2. UBOOT 启动流程

    一.概述 uboot 的启动流程在网上有很多大佬记录,但是了对于像我这样的新手就有些困难了,而我也不做 uboot 相关的工作,所以没必去研究代码,这里我特意整理了一下,以流程图的形式展现代码执行的流 ...

  3. Mysql-delete语句

    ` 点击查看代码 删除2天之前的所有数据 delete From lkt_files_record where DATE(add_time) <= DATE(DATE_SUB(NOW(),INT ...

  4. 秒懂 Golang 中的 条件变量(sync.Cond)

    本篇文章面向的读者: 已经基本掌握Go中的 协程(goroutine),通道(channel),互斥锁(sync.Mutex),读写锁(sync.RWMutex) 这些知识.如果对这些还不太懂,可以先 ...

  5. 如何让铁威马NAS可以通过互联网访问?

    当你在家或者出差去外地时候,可能要通过互联网访问你的TNAS设备,而使用远程访问功能,你可以随时随地访问你的TNAS 设备.读取你TNAS 中的文件或是对你的TNAS 设备进行配置.远程访问能给你的工 ...

  6. TCPView工具

    TCPView:一个查看端口和线程的小工具.(不需安装) 主界面: 启动程序之后,你就发现TCPView将你目前在使用的所有进程都列举出来了,并时不时的会用红.黄.绿三种颜色标注某些进程: 红色代表该 ...

  7. django中只使用ModleForm的表单验证,而不使用ModleForm来渲染

    主题 众所周知,django.forms极其强大,不少的框架也借鉴了这个模式,如Scrapy.在表单验证时,django.forms是一绝,也是面向对象的经典表现.但要用它来渲染表单那就不好玩了,除非 ...

  8. “喜提”一个P2级故障—CMSGC太频繁,你知道这是什么鬼?

    大家好,我是陶朱公Boy. 背景 今天跟大家分享一个前几天在线上碰到的一个GC故障- "CMSGC太频繁". 不知道大家看到这条告警内容后,是什么感触?我当时是一脸懵逼的,一万个为 ...

  9. Redis-02 Redis 类型

    Redis List 命令 说明 例子 LPush 在 List 头插入一个或多个元素 LPush mylist hello RPush 在 List 尾插入一个或多个元素 RPush mylist ...

  10. SSM框架——整合ssm

    SSM整合 1.准备工作 新建一个普通的Maven项目 建好所有需要的架构层 向pom.xml中导入所有的依赖 <!--MyBatis相关--> <dependency> &l ...