Python字典设置默认值
我们都知道,在 Python 的字典里边,如果 key 不存在的话,通过 key 去取值是会报错的。
1
2
3
4
5
|
>>> aa = { 'a' : 1 , 'b' : 2 } >>> aa[ 'c' ] Traceback (most recent call last): File "<stdin>" , line 1 , in <module> KeyError: 'c' |
如果我们在取不到值的时候不报错而是给定一个默认值的话就友好多了。
初始化的时候设定默认值(defaultdict 或 dict.fromkeys)
1
2
3
4
5
6
7
8
9
10
11
12
13
|
>>> 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 也可以传入自定义的匿名函数之类的哟。
1
2
3
|
>>> aa = defaultdict( lambda : 1 ) >>> aa[ 'a' ] 1 |
获取值之前的时候设定默认值(setdefault(key, default))
这里有个比较特殊的点:只要对应的 key 已经被设定了值之后,那么对相同 key 再次设置默认值就没用了。
因此,如果你在循环里边给一个 key 重复设定默认值的话,那么也只会第一次设置的生效。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
>>> 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))
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
>>> 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创建带默认值的字典
1
2
|
from collections import defaultdict data = collections.defaultdict( lambda :[]) |
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持服务器之家。
原文链接:https://blog.csdn.net/TomorrowAndTuture/article/details/113121157