Вы получаете доступ к несуществующим ключам, поэтому ошибка.Вы можете исправить это:
mydict = {1: 6, 2: 4, 3: 10, 4: 7, 5: 3}
# there is no sense in creating dfc - if you need a dublicate, use dfc = dict(mydict)
sorted_keys = sorted(mydict) # sort keys - dicts are unordered / insert ordered from 3.7 on
for k in sorted_keys:
print(f"index: {k}, key: {k}, value: {mydict[k]}")
result = {}
for i in sorted_keys:
result[i] = mydict[i] * mydict.get(i+1,1) # avoid key error, if not existst, mult by 1
for k in sorted_keys:
print(f"index: {k}, key: {k}, value: {result[k]}")
Вывод:
index: 1, key: 1, value: 6
index: 2, key: 2, value: 4
index: 3, key: 3, value: 10
index: 4, key: 4, value: 7
index: 5, key: 5, value: 3
index: 1, key: 1, value: 24
index: 2, key: 2, value: 40
index: 3, key: 3, value: 70
index: 4, key: 4, value: 21
index: 5, key: 5, value: 3
Использование dict.get(key,default)
позволяет попытаться получить значение, а при отсутствии позволяет использовать значение по умолчанию 1
.1 * все, что не изменит результат.
См. Почему dict.get (ключ) вместо dict [ключ]?