python 通用字典方法

版本1

方法

# 不传返回所有属性,传入props只返回传入的对应属性
def m_dict(obj, props=[]):
    result = {}
    target = obj if len(props)==0 else props
    for i in target:
        try:
            result[i] = getattr(obj, i) if hasattr(obj, i) else obj[i]
        except:
            pass
    return result

 

用法

print m_dict(对象, props=[属性1, 属性2])

可传入orm对象,sql查询结果,字典

如传入props,则返回传入的元素构成字典

不传props,则返回所有元素构成的字典

 

版本2

方法

# 不传返回所有属性,传入props只返回传入的对应属性
def m_dict(obj, props=[]):
    result = {}
    temp = obj.__dict__ if hasattr(obj, '__dict__') else obj
    target = temp if len(props)==0 else props
    for i in target:
        if not i.startswith('_'):
            try:
                result[i] = getattr(obj, i) if hasattr(obj, i) else obj[i]
            except:
                pass
    return result

 

版本2测试

orm

        session = DBSession()
        spiders = session.query(SpiderRule).filter(SpiderRule.state==2)
        for spider in spiders:
            print m_dict(spider,props=['id', 'name'])
            print m_dict(spider)

dict

    a = {
        'a':1,
        'b':2,
        'c':3
    }
    print m_dict(a,'a')
    print m_dict(a)

 

posted @ 2018-09-04 16:45  吃饭睡觉打逗逗  阅读(213)  评论(1编辑  收藏  举报