返回非null变量的值

时间:2017-09-19 05:33:59

标签: python variables null

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'

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方法和第二个参数,如果密钥不存在,它将作为默认的返回值。