Python检查字典键存在并取值:自由现金流计算代码优化问询
优化自由现金流计算的简洁实现
嘿,先提个小细节:你当前的代码里把freeCashflow = 0放在了循环内部,这会导致每次循环都重置这个变量,最后只能得到最后一年的自由现金流,而不是所有年份的累加值哦~得把初始化移到循环外面才行。
接下来给你几个更简洁的实现方式:
方式一:利用字典的get()方法(推荐,兼顾简洁和可读性)
dict.get(key, default)方法会在键不存在时返回指定的默认值(这里用0),省去了手动判断键是否存在的步骤,代码更清爽:
freeCashflow = 0 for year in dict['cashflowStatements']: freeCashflow += year.get('totalCashFromOperatingActivities', 0) freeCashflow += year.get('capitalExpenditures', 0)
方式二:用生成器表达式+sum()函数(一行式实现)
如果追求极致简洁,可以把计算逻辑放到生成器表达式里,直接用sum()完成累加:
freeCashflow = sum( year.get('totalCashFromOperatingActivities', 0) + year.get('capitalExpenditures', 0) for year in dict['cashflowStatements'] )
或者拆成两个sum(),可读性稍好一点:
freeCashflow = ( sum(year.get('totalCashFromOperatingActivities', 0) for year in dict['cashflowStatements']) + sum(year.get('capitalExpenditures', 0) for year in dict['cashflowStatements']) )
额外小提示(扩展性优化)
如果后续需要扩展更多参与计算的字段,可以把字段名放到一个列表里,循环遍历字段来累加,这样扩展性更强:
cashflow_fields = ['totalCashFromOperatingActivities', 'capitalExpenditures'] freeCashflow = 0 for year in dict['cashflowStatements']: for field in cashflow_fields: freeCashflow += year.get(field, 0)
这样以后加新字段,只需要修改cashflow_fields列表就行,不用改循环逻辑~
内容的提问来源于stack exchange,提问作者michaelgr22
相关产品推荐
相关产品推荐

