代码之家  ›  专栏  ›  技术社区  ›  NoviceMe

创建json负载的更好方法

  •  1
  • NoviceMe  · 技术社区  · 8 年前

    这是我的代码:

    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 回复  |  直到 8 年前
        1
  •  1
  •   blhsing    8 年前

    你可以使用听写理解:

    payload = {arg: getattr(self, arg) for arg in args if hasattr(self, arg)}
    
        2
  •  1
  •   Kamil Jarosz    8 年前

    因为属性与 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) }