Это не какой-то вывод типа, вы просто предоставляете функцию, которая генерирует значение по умолчанию. В то время как int
, list
, dict
без аргумента генерируют 0
, []
, {}
, что часто используется в объявлении defaultdict. В Python нет встроенной функции конструктора для пары списков и т. Д. Так что это просто, как
di = defaultdict(lambda : ([1,2,3], ['a', 'cb']))
Хотя Python допускает кортежи (пары) списков, у вас могут возникнуть некоторые проблемы, например, с хэшированием списка кортежей. Чтобы быть в безопасности, вы можете установить по умолчанию список из двух списков. Обратите внимание, что вы установили определенные списки, пустые или нет, а не тип / конструктор списка. Буквально о настройке значения по умолчанию, а не об объявлении типа - списки Python не типизированы.
from collections import defaultdict
l1 = []
l2 = ["another", "default", "list"]
di = defaultdict(lambda : [ l1, l2] )
print (di[3])