Message 85854 - Python tracker (original) (raw)

By the way, defaultdict is NOT like setdefault--it is like get(). Missing entries do no get set.

Why do you say that?

missing(...) missing(key) # Called by getitem for missing key; pseudo-code: if self.default_factory is None: raise KeyError((key,)) self[key] = value = self.default_factory() return value

In all cases of setdefault that I know of, replacing this with a defaultdict would be appropriate. The only case where it wouldn't work is if the default value depends on the key.

What do you think?

If no speedup can be demonstrated, we should not change it.