Python中如何给字典设置默认值
Python字典设置默认值
我们都知道,在 Python 的字典里边,如果 key 不存在的话,通过 key 去取值是会报错的。
>>> aa = {'a':1, 'b':2} >>> aa['c'] Traceback (most recent call last): File "<stdin>", line 1, in <module> 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 "<stdin>", line 1, in <module> 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 :[])
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
ActiveMQ:使用Python访问ActiveMQ的方法
今天小编就为大家分享一篇ActiveMQ:使用Python访问ActiveMQ的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2019-01-01python人工智能tensorflow函数tf.get_collection使用方法
这篇文章主要为大家介绍了python人工智能tensorflow函数tf.get_collection使用方法,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪2022-05-05Python报错SyntaxError:unexpected EOF while parsing的解决办法
在运行或编写一个程序时常会遇到错误异常,这时python会给你一个错误提示类名,告诉出现了什么样的问题,下面这篇文章主要给大家介绍了关于Python报错SyntaxError:unexpected EOF while parsing的解决办法,需要的朋友可以参考下2022-07-07Python OpenCV 调用摄像头并截图保存功能的实现代码
这篇文章主要介绍了Python OpenCV 调用摄像头并截图保存功能,本文通过两段实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下2019-07-07
最新评论