python – Why KeyError: 0
python – Why KeyError: 0
You insert 0
for i = 1
here:
sumsdivs = {}
for i in range(1, 10000):
tmpls = []
for j in range(1, i):
if i % j == 0:
tmpls.append(j)
sumsdivs[i] = sum(tmpls)
The inner loop never runs (range(1, 1)
is empty), and sum([])
is 0.
Demo:
>>> sumsdivs = {}
>>> for i in range(1, 2):
... tmpls = []
... for j in range(1, i):
... if i % j == 0:
... tmpls.append(j)
... sumsdivs[i] = sum(tmpls)
...
>>> sumsdivs
{1: 0}
>>> sum([])
0
So sumsdivs[1]
is 0, and sumsdivs[sumsdivs[0]]
throws a KeyError
:
>>> sumsdivs[sumsdivs[1]]
Traceback (most recent call last):
File <stdin>, line 1, in <module>
KeyError: 0