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

python – Why KeyError: 0

Leave a Reply

Your email address will not be published.