dict创建中的可选字典项

blu*_*ank 2 python conditional dictionary key key-value

我有一个返回字典的函数:

 def to_dict(self):
     return dict({'identification': self.identifier,
                  'information': self.information,
                  'nodes': {e.position: e.to_dict for e in self.children}
                  })
Run Code Online (Sandbox Code Playgroud)

有没有办法可选择添加每个k/v?这不起作用,例如:

def to_dict(self):
         return dict({'identification': self.identifier,
                      'information': self.information,
                      'nodes': {e.position: e.to_dict for e in self.children} if self.children
                      })
Run Code Online (Sandbox Code Playgroud)

有没有办法添加dict创建的可选部分,而无需为每个变体构建单独的字典; 是否有更好的方法来做到这一点?

Mar*_*ers 5

在本地存储dict,在返回之前使用您的额外信息更新它:

def to_dict(self):
     retval = {'identification': self.identifier,
               'information': self.information,
              }
     if self.children:
         retval['nodes'] = {e.position: e.to_dict for e in self.children}
     return retval
Run Code Online (Sandbox Code Playgroud)

我删除了dict()我的示例中的构造函数,它完全是多余的.但是因为你的所有键都是有效的python标识符,你可以通过使用dict()构造函数和关键字参数以更紧凑的方式定义你的dict :

def to_dict(self):
     retval = dict(identification=self.identifier,
                   information=self.information)
     if self.children:
         retval['nodes'] = {e.position: e.to_dict for e in self.children}
     return retval
Run Code Online (Sandbox Code Playgroud)