首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >属性值字典

属性值字典
EN

Code Review用户
提问于 2014-07-18 09:47:33
回答 2查看 427关注 0票数 6

在下面的代码中,我有一个属性和值的字典。我正在检查该值是否为True,如果为True,则将该属性添加到列表中以供以后处理(它将成为SQL组by的一部分)。

这段代码工作得很好,但我想知道它怎么会更像"Pythonic“。请注意,col_map dict实际上要大得多。

代码语言:javascript
复制
   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

实例结果

代码语言:javascript
复制
    ['pn_family', 'order_type', 'pn_group', 'categ']
EN

回答 2

Code Review用户

回答已采纳

发布于 2014-07-18 09:52:41

我会做

代码语言:javascript
复制
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)]
  • 迭代列表理解是更有效的。
  • 您不构建元组的迭代项列表。
票数 6
EN

Code Review用户

发布于 2014-07-18 09:54:26

全组可以用单行列表理解来编写。

代码语言:javascript
复制
groupby=  [value  for key, value in col_map.iteritems() if getattr(supply_kpi,key) ]
票数 6
EN
页面原文内容由Code Review提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codereview.stackexchange.com/questions/57368

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档