The two are less connected than you seem to think.
Really ? What's the use mainstream use cases for setdefault ?
I was often in the case of Alex.
Well, defaultdict configures a default when an instance is created, while setdefault() is used when inserting a value.
A major issue IMO with defaultdict is that if you try to *read* a non-existing key it will be inserted.
--