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!

--

--

No responses yet