Я пытаюсь выполнить вычисление между значением словаря и его соответствующим ключом.
dict_cashflows = {0:-10000, 1: 500, 2: 1500, 10: 10000}
rate=0.06
Например, я хотел бы дисконтировать денежные потоки в приведенном выше словаре. Важно использовать ключи словаря для скидок, поэтому мне не нужно заполнять пробелы между ключами.
Для каждой пары в словаре расчет должен быть:
value/((1+rate)**key)
Если возникнут сомнения, не стесняйтесь спрашивать. Заранее спасибо,






Вы можете выполнять итерацию только по ключам, или вы можете выполнять итерацию по обоим:
dict_cashflows = {0:-10000, 1: 500, 2: 1500, 10: 10000}
rate=0.06
cashflow = {k : dict_cashflows[k] / (1.+rate)**k for k in dict_cashflows.keys()} #building a new dict from iterating over keys
print(cashflow)
cashflow2 = {k : v / (1.+rate)**k for k,v in dict_cashflows.items()} #building a new dict while iterating on both
print(cashflow2)
Работает отлично и кажется намного лучше того, что я опубликовал. Спасибо
Итак, я нашел способ сделать это:
dict_cashflows = {0:-10000, 1: 500, 2: 1500, 10: 10000}
`def NPV_dict(dictcfs,rate=0.06):
npv=0.0
periods=list(dictcfs.keys())
cfs=list(dictcfs.values())
for i in range(len(dict_cashflows)):
calc=cfs[i]/((1+rate)**(periods[i]))
npv+=calc
return npv`
Ой! range(len(...)) - это запах кода Python. Вместо этого используйте for period, cashflow in dict.items():
@MartinBonner Я только начал кодить. Спасибо за ваш отзыв
вы можете перебирать словарь с парами ключ, значение, выполнив
for key,value in dict_cashflows.items()