Skip to content Skip to sidebar Skip to footer

Python `defaultdict`: Use Default When Setting, But Not When Getting

Is there any way I can make a collections.defaultdict return a default constructed object when I set it... foo = defaultdict(list) foo[3].append('dsafdasf') ... but not when I try

Solution 1:

I think that what you're looking for is something like this:

>>>foo = {}>>>foo.setdefault(3, []).append('dsafdasf') # Appends to default value>>>foo[None] # Raises a KeyError exception

That is, instead of using collections.defaultdict, you could use a regular dictionary and use setdefault method when you need to assign a default and item access when you need an exception to be raised for missing keys.

Solution 2:

No, because your example of "setting it" is actually an example of getting an unused slot.

Post a Comment for "Python `defaultdict`: Use Default When Setting, But Not When Getting"