每次Python时都不需要引用字典就可以获取字典值

时间:2017-07-16 19:36:19

标签: python dictionary

我正在使用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']

2 个答案:

答案 0 :(得分:0)

如果您要寻找的只是一点代码美学,那么您可以使用operator.itemgetter()来获取args列表,例如:

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

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

答案 1 :(得分:0)

您可以引用项目列表

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