本文共 1055 字,大约阅读时间需要 3 分钟。
我们都知道,在 Python 的字典里边,如果 key 不存在的话,通过 key 去取值是会报错的。
>>> aa={'a':1, 'b':2}>>> aa['c']Traceback (most recent call last): File "", line 1, in KeyError: 'c'
如果我们在取不到值的时候不报错而是给定一个默认值的话就友好多了。
>>> from collections import defaultdict>>> aa=defaultdict(int)>>> aa['a']=1>>> aa['b']=2>>> aadefaultdict(, {'a': 1, 'b': 2})>>> aa['c']0>>> aadefaultdict( , {'a': 1, 'b': 2, 'c': 0})
这里有个比较特殊的点:只要对应的 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'
>>> 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
转载地址:http://fijqi.baihongyu.com/