我正在尝试修改字典中的键值,如果键值为None或键不存在,则应将其设置为添加其他两个键的值。
但是,在尝试添加无'unsupported operand type(s) for +: 'NoneType' and 'NoneType'
我怎样才能最好地写这个来处理存在但缺少值的缺失密钥或密钥? 我正在尝试的代码是:
for quote in quotes_results:
exit_fee_combined = quote.get('exitFeeA', None) + quote.get('exitFeeB', None)
quote.setdefault('exitFeeCombined', exit_fee_combined)
下面这段可怕的代码完成了这项工作,但似乎过于复杂(我无法使用setdefault,因为如果它找到密钥但是None
作为值,它将不会使用默认值)。
有什么方法可以改善吗?
for quote in quotes_results:
exit_fee_A = quote.get('exitFeeA', None)
exit_fee_B = quote.get('exitFeeB', None)
if exit_fee_A and exit_fee_B:
exit_fee_combined = exit_fee_B + exit_fee_A
elif exit_fee_A or exit_fee_B:
exit_fee_combined = exit_fee_A or exit_fee_B
else:
exit_fee_combined = None
existing_combined_fee = quote.get('exitFeeCombined', None)
if not existing_combined_fee:
quote['exitFeeCombined'] = exit_fee_combined
答案 0 :(得分:1)
for quote in quotes_results:
exit_fee_combined = quote.get('exitFeeA', 0) + quote.get('exitFeeB', 0)
在这种情况下,最简单的解决方案是正确选择get
的结果。因为添加0对数字没有影响,所以就这样做。如果您的值是字符串,请使用""
代替0
。
答案 1 :(得分:0)
根据Jon的评论,这是最好的解决方案:
((quote.get('A') or 0) + (quote.get('B') or 0) or None)