创建JSON有效负载的更好方法

时间:2018-08-22 13:00:11

标签: python-3.x

这是我的代码:

args = [“f_name”, “l_name”, “age”]

payload = {}
if hasattr(self,”f_name”):
    payload[‘f_name”] = self.f_name 
elif hasattr(self,”l_name”):
    payload[‘l_name’] = self.l_name
elif hasattr(self,”age”):
    payload[‘age’] = self.age

我是Python的新手,是否想知道这是最好的方法,还是可以用更Python化的方式来做到?

2 个答案:

答案 0 :(得分:1)

由于属性与args列表中的名称匹配,所以为什么不像这样遍历整个事情:

args = ["f_name", "l_name", "age"]
payload = {}
for arg in args:
    if hasattr(self, arg):
        payload[arg] = getattr(self, arg)

如果您想要一个更简洁的版本(尽管就可读性而言,这尚有争议),则可以使用类似字典理解的功能:

args = ["f_name", "l_name", "age"]
payload = { arg:getattr(self,arg) for arg in args if hasattr(self,arg) }

答案 1 :(得分:1)

您可以使用dict理解:

rescue ::Lib::Commands::BaseException => exception
  error.call(params[:id], exception.message)