在下面的代码中,我有一个属性和值的字典。我正在检查该值是否为True,如果为True,则将该属性添加到列表中以供以后处理(它将成为SQL组by的一部分)。
这段代码工作得很好,但我想知道它怎么会更像"Pythonic“。请注意,col_map dict实际上要大得多。
col_map = {
'dim_3a_group_checkbox': 'pn_group',
'dim_3a_family_checkbox': 'pn_family',
'dim_3a_root_checkbox': 'pn_root',
}
# get an object with the attributes (eg:dim_3a_root_checkbox) as True / False
supply_kpi = self.browse(cr, uid, ids, context=None)[0]
group_by = []
for key, value in col_map.iteritems():
x = getattr(supply_kpi,key)
if x: # only add if attribute is True
group_by.append(value)
print group_by实例结果
['pn_family', 'order_type', 'pn_group', 'categ']发布于 2014-07-18 09:52:41
我会做
supply_kpi = self.browse(cr, uid, ids, context=None)[0]
group_by = [col_map[key] for key in col_map if getattr(supply_kpi, key)]发布于 2014-07-18 09:54:26
全组可以用单行列表理解来编写。
groupby= [value for key, value in col_map.iteritems() if getattr(supply_kpi,key) ]https://codereview.stackexchange.com/questions/57368
复制相似问题