我有一个返回字典的函数:
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创建的可选部分,而无需为每个变体构建单独的字典;还有更好的方法吗?
答案 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