Mar 1, 2025
Good advice, but it doesn't go far enough.
defaultdict
is almost always a mistake, because it's a potential trap.
You create fill up a defaultdict
and then pass it to someone else who thinks it's a dict
because it is in fact an instance of dict
, but surprise!, instead of getting a KeyError
when an element doesn't exist, a new error is created.
Instead, use dict.setdefault
.
For example, to invert a dictionary:
d: dict[str, Any]
result: dict[Any, list[str]] = {}
for k, v in d.items():
result.setdefault(v, []).append(k)
Decent article, expect claps!