Я работаю над требованием, которое должно принимать несколько диктов в качестве входных аргументов и преобразовывать / объединять их в один диктовку в качестве выходных данных, к входным диктантам будут применены некоторые формулы.Вывод выглядит примерно так: (с полями более 50)
output = {
'pnl': 100,
'pnl_usd': 400,
'pnl_eur': 500,
'ytd': 200,
'ytd_usd': 2000,
'ytd_eur': 3000,
'mtd': 300,
'mtd_eur': 300,
'cost': [
{'prod_1': {'labour': 1000, 'material': 2000}},
{'prod_2': {'labour': 2000, 'material': 3000}}
]
# many more fields
}
Интересно, каков наилучший способ реализации этого?Прямо сейчас наши разработчики сначала определили множество локальных переменных, а затем вычислили числа, а затем заполнили dict и вернули его.
def produce_dict(cost_dict, revenue_dict, date):
pnl = revenue_dict.get('revenue') - cost_dict.get('cost')
pnl_in_usd = pnl * get_fx_rate(date)
pnl_in_usd_prev = pnl * get_fx_rate(date - 1)
pnl_mtd = revenue_dict.get('revenue_mtd') - cost_dict.get('cost_mtd')
pnl_mtd_in_usd = pnl_mtd * get_fx_rate(date)
pnl_mtd_in_usd_prev = pnl_mtd * get_fx_rate(date - 1)
daily_pnl_gain = pnl_mtd_in_usd - pnl_mtd_in_usd_prev
# many more local variables here
return {'pnl': pnl, 'pnl_in_usd': pnl_in_usd, etc.etc...}
Есть ли более чистый способ сделать это, отделить логику расчета от построения диктата?Спасибо.