天天看点

python defaultdict(set),如何将默认值设置为python中的一个dict对象的所有键?

python defaultdict(set),如何将默认值设置为python中的一个dict对象的所有键?

I know you can use setdefault(key, value) to set default value for a given key, but is there a way to set default values of all keys to some value after creating a dict ?

Put it another way, I want the dict to return the specified default value for every key I didn't yet set.

解决方案

You can replace your old dictionary with a defaultdict:

>>> from collections import defaultdict

>>> d = {'foo': 123, 'bar': 456}

>>> d['baz']

Traceback (most recent call last):

File "", line 1, in

KeyError: 'baz'

>>> d = defaultdict(lambda: -1, d)

>>> d['baz']

-1

The "trick" here is that a defaultdict can be initialized with another dict. This means

that you preserve the existing values in your normal dict:

>>> d['foo']

123