python中返回3个变量值的最佳方法是什么,即不为null。 只有1个变量在任何时候都不会为空。
到目前为止,我正在使用这种非效率代码
if kwargs.get('F06_yes_1'):
context1.update({'F06_1': kwargs['F06_yes_1']})
elif kwargs.get('F06_no_1'):
context1.update({'F06_1': kwargs['F06_no_1']})
else:
context1.update({'F06_1': kwargs['F06_na_1']})
此外,要进行替换(根据您的评论),您可以尝试:
context1.update({
'F06_1': ('yes' if kwargs['F06_yes_1'] else None)
or ('no' if kwargs['F06_no_1'] else None)
or ('n/a' if kwargs['F06_na_1'] else None)
})
进一步提供下面的答案,当F06_yes_1值为空时,F06_no_1值为" on"我收到以下错误:
Traceback (most recent call last):
File "C:\Python27\lib\site-packages\cherrypy\_cprequest.py", line 670, in respond
response.body = self.handler()
File "C:\Python27\lib\site-packages\cherrypy\lib\encoding.py", line 217, in __call__
self.body = self.oldhandler(*args, **kwargs)
File "C:\Python27\lib\site-packages\cherrypy\_cpdispatch.py", line 60, in __call__
return self.callable(*self.args, **self.kwargs)
File "example.py", line 872, in RPC_submit
'F06_1': ('yes' if kwargs['F06_yes_1'] else None)
KeyError: 'F06_yes_1'
答案 0 :(得分:4)
或操作将选择第一个非None值。
context1.update({
'F06_1': kwargs['F06_yes_1']
or kwargs['F06_no_1']
or kwargs['F06_na_1']
})
此外,要进行替换(根据您的评论),您可以尝试:
context1.update({
'F06_1': ('yes' if kwargs.get('F06_yes_1', None) else None)
or ('no' if kwargs.get('F06_no_1', None) else None)
or ('n/a' if kwargs.get('F06_na_1', None) else None)
})
您正在获取KeyError,因为您正在尝试查找不存在的记录。为了更优雅地处理这个问题,你可以使用.get方法和第二个参数,如果密钥不存在,它将作为默认的返回值。