检查Python3中词典理解中是否存在getattr

检查Python3中词典理解中是否存在getattr,python,python-3.x,dictionary,dictionary-comprehension,getattr,Python,Python 3.x,Dictionary,Dictionary Comprehension,Getattr,我有一行代码 attributes_dict["data_properties"] = { prop: getattr(ontology_node, prop) for prop in data_properties } 但是,并不是每个ontology_节点都具有所有属性,所以我想做一些类似于以下的事情 attributes_dict["data_properties"] = { prop: getattr(ontology_node,

我有一行代码

attributes_dict["data_properties"] = {
    prop: getattr(ontology_node, prop) for prop in data_properties
}
但是,并不是每个ontology_节点都具有所有属性,所以我想做一些类似于以下的事情

attributes_dict["data_properties"] = {
    prop: getattr(ontology_node, prop) for prop in data_properties if getattr(onotology_node, prop)
}
不幸的是,这不能正常工作。有没有一种方法可以检查dict理解中的ontology_节点中是否存在上述内容

当然,我可以手动完成,但如果可能的话,我想使用听写理解

谢谢你应该做这项工作

attributes_dict["data_properties"] = {
    prop: getattr(ontology_node, prop) for prop in data_properties if hasattr(onotology_node, prop)
}

注:
prop
应为
str
类型

您所说的“工作不正常”是什么意思?使用
。\uuuuu dict\uuuuu
检查您要查找的键是否在字典中。它会抛出一个错误,表示该属性不在本体节点中。对于您的编辑,还可以为
getattr
提供第三个值,这是一个默认值,在对象上不存在属性的情况下返回。这在这里似乎不太有用,除非你使用作业黑客,但在其他情况下,它是相当方便的。