setdefault works best for simple data types, calling the factory function every time doesn't make sense...