Я часто использовал collections.defaultdict
, чтобы иметь возможность добавить элемент к d[key]
без необходимости сначала инициализировать его как []
(преимущество: вам не нужно делать: if key not in d: d[key] = []
):
import collections, random
d = collections.defaultdict(list)
for i in range(100):
j = random.randint(0,20)
d[j].append(i) # if d[j] does not exist yet, initialize it to [], so we can use append directly
Теперь я понимаю, что мы можем просто использовать обычные dict
и setdefault
:
import random
d = {}
for i in range(100):
j = random.randint(0,20)
d.setdefault(j, []).append(i)
Вопрос: при использовании dict
, значения которого являются списками, есть лихорошая причина использовать collections.defaultdict
вместо второго метода (используя простые dict
и setdefault
), или они чисто эквивалентны?