Я практиковал некоторые алгоритмические вопросы и натолкнулся на следующий отрывок на днях в Python 3:
for i, num in enumerate(nums):
n = target - num
if n not in h:
h[num] = i
Разве этот код не должен выдавать KeyError, поскольку h[num]
не определено? Я подумал, что когда это происходит, нам нужно использовать collections.defaultdict()
, чтобы предотвратить KeyError.
Я сталкивался с этим раньше, и он использует defaultdict
, чтобы избежать KeyErrors, как утверждает автор, но я неЗдесь нет разницы между ними.
targets = collections.defaultdict(list)
for a, b in sorted(tickets)[::-1]:
targets[a] += b,