Разница в том, что defaultdict
будет "по умолчанию" значение, если этот ключ еще не был установлен. Если вы не использовали defaultdict
, вам нужно проверить, существует ли этот ключ, а если нет, установите его на то, что вы хотите.
Лямбда определяет фабрику для значения по умолчанию. Эта функция вызывается всякий раз, когда ей нужно значение по умолчанию. Вы могли бы гипотетически иметь более сложную функцию по умолчанию.
Help on class defaultdict in module collections:
class defaultdict(__builtin__.dict)
| defaultdict(default_factory) --> dict with default factory
|
| The default factory is called without arguments to produce
| a new value when a key is not present, in __getitem__ only.
| A defaultdict compares equal to a dict with the same items.
|
(из help(type(collections.defaultdict()))
)
{}.setdefault
аналогичен по своей природе, но принимает значение вместо заводской функции. Он используется для установки значения, если оно еще не существует ... хотя и немного по-другому.