In the code below, I have a dictionary of attributes and values. I am checking to see if the value if an attribute is True, and if so adding the attribute to a list for later processing (it becomes part of a SQL group by).This code works fine, but I was wondering how it could be more Pythonic. Note that the col_map dict is actually a lot bigger.   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_byExample results    ['pn_family', 'order_type', 'pn_group', 'categ']
Dictionary of attributes and values
python;dictionary
I would dosupply_kpi = self.browse(cr, uid, ids, context=None)[0]group_by = [col_map[key] for key in col_map if getattr(supply_kpi, key)]Iterating with list comprehension is much more efficient.You don't build iteritems list of tuples.