获取字典值而不必每次引用字典

2024-10-02 22:24:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在从XBRL数据构建一个大型字典,以便自动生成自定义财务比率。下面的代码工作得很好,但我很好奇是否有更好的方法来引用字典项,而不必每次从字典中提取变量时都写出字典名称

FinStatItems = {'GainOnSaleOfRealEstate': 0, 'DepreciationAndAmortization': 104044000.0, 'NetIncome': -4086000.0, 'ImpairmentOnInvestmentsInRealEstate': 122472000.0}
NAREIT_FFO = FinStatItems['NetIncome'] + FinStatItems['DepreciationAndAmortization'] + FinStatItems['ImpairmentOnInvestmentsInRealEstate'] - FinStatItems['GainOnSaleOfRealEstate']

print('NAREIT FFO = ' + str(NAREIT_FFO))

有没有更好的方法写这行字:

NAREIT_FFO = FinStatItems['NetIncome'] + FinStatItems['DepreciationAndAmortization'] + FinStatItems['ImpairmentOnInvestmentsInRealEstate'] - FinStatItems['GainOnSaleOfRealEstate']

Tags: 数据方法代码名称字典财务比率xbrl
2条回答

如果您想要的只是一点代码美学,那么您可以使用operator.itemgetter(),它可以获取参数列表,例如:

>>> import operator as op
>>> fn = op.itemgetter('NetIncome', 'DepreciationAndAmortization', 'ImpairmentOnInvestmentsInRealEstate')
>>> NAREIT_FFO = sum(fn(FinStatItems)) - FinStatItems['GainOnSaleOfRealEstate']

但这不会比您的原始代码更有效。只有当您想重用fn()时才真正有用

您可以引用项目列表

FinStatItems = {'GainOnSaleOfRealEstate': 0, 'DepreciationAndAmortization': 104044000.0, 'NetIncome': -4086000.0, 'ImpairmentOnInvestmentsInRealEstate': 122472000.0}
items = ['NetIncome', 'DepreciationAndAmortization', 'ImpairmentOnInvestmentsInRealEstate', 'GainOnSaleOfRealEstate']
NAREIT_FFO = sum(FinStatItems[item] for item in items[:-1]) - FinStatItems[items[-1]]

print('NAREIT FFO = ' + str(NAREIT_FFO))

相关问题 更多 >