Brandon Mintern schrieb:
I can see one drawback to this: there is a risk of people using defaultdict([]) instead of defaultdict(list) with the idea that they will do the same thing. I think this problem can be easily overcome in the defaultdict documentation by specifically mentioning such a case as a gotcha while also using an example with a non-callable that shows how it is similar to using dict.get(...).
I think this was exactly one of the reasons that defaultdict takes a factory function. Using a list as the default is a very common use case, and here (as opposed to function parameter defaults) we *can* prevent endless streams of programmers falling into a "trap". Also, this is exactly the kind of situation where lambda fits perfectly. Since we have and keep lambda, I see no reason to complicate the API. This should be documented with defaultdict though. I see an example for a constant default value, but it uses itertools.repeat (!?) Georg