2

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

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

有没有办法选择性地添加每个 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
                      })

有没有一种方法可以添加字典创建的可选部分,而不必为每个变体构建单独的字典;有没有更好的方法来做到这一点?

4

1 回答 1

5

将字典存储在本地,在返回之前使用您的额外信息对其进行更新:

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

我在示例中删除了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
于 2012-09-28T13:34:01.777 回答