dict创建中的可选字典项

时间:2012-09-28 13:32:03

标签: python dictionary key conditional 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}
                  })

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

有没有办法添加dict创建的可选部分,而无需为每个变体构建单独的字典;还有更好的方法吗?

1 个答案:

答案 0 :(得分: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

我在我的示例中删除了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