Вычисление значений и ключей в словарях

Я пытаюсь выполнить вычисление между значением словаря и его соответствующим ключом.

dict_cashflows = {0:-10000, 1: 500, 2: 1500, 10: 10000} rate=0.06

Например, я хотел бы дисконтировать денежные потоки в приведенном выше словаре. Важно использовать ключи словаря для скидок, поэтому мне не нужно заполнять пробелы между ключами.

Для каждой пары в словаре расчет должен быть:

value/((1+rate)**key)

Если возникнут сомнения, не стесняйтесь спрашивать. Заранее спасибо,

вы можете перебирать словарь с парами ключ, значение, выполнив for key,value in dict_cashflows.items()

Nullman 16.12.2018 13:49
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
1
39
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Вы можете выполнять итерацию только по ключам, или вы можете выполнять итерацию по обоим:

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)

Работает отлично и кажется намного лучше того, что я опубликовал. Спасибо

Bernardo Falcao 16.12.2018 14:01

Итак, я нашел способ сделать это:

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():

Martin Bonner supports Monica 16.12.2018 14:11

@MartinBonner Я только начал кодить. Спасибо за ваш отзыв

Bernardo Falcao 16.12.2018 16:23

Другие вопросы по теме