Reputation: 4766
If I have d=dict(zip(range(1,10),range(50,61)))
how can I build a collections.defaultdict
out of the dict
?
The only argument defaultdict
seems to take is the factory function, will I have to initialize and then go through the original d
and update the defaultdict
?
Upvotes: 119
Views: 60117
Reputation: 301
You can construct a defaultdict from dict, by passing the dict as the second argument.
from collections import defaultdict
d1 = {'foo': 17}
d2 = defaultdict(int, d1)
print(d2['foo']) ## should print 17
print(d2['bar']) ## should print 0 (int() returns 0)
Upvotes: 20
Reputation: 267
You can create a defaultdict with a dictionary by using a callable.
from collections import defaultdict
def dict_():
return {'foo': 1}
defaultdict_with_dict = defaultdict(dict_)
Upvotes: -1
Reputation: 107598
The first argument provides the initial value for the default_factory attribute; it defaults to None. All remaining arguments are treated the same as if they were passed to the dict constructor, including keyword arguments.
from collections import defaultdict
d=defaultdict(int, zip(range(1,10),range(50,61)))
Or given a dictionary d
:
from collections import defaultdict
d=dict(zip(range(1,10),range(50,61)))
my_default_dict = defaultdict(int,d)
Upvotes: 130