V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
coolair
V2EX  ›  问与答

请教一个 Python 在逻辑判断上更优雅的写法

  •  
  •   coolair · 2019-05-31 14:40:38 +08:00 · 1154 次点击
    这是一个创建于 2008 天前的主题,其中的信息可能已经有所发展或是发生改变。

    在写 SQLAlchemy 查询的时候:

    if x == 'a':
        query = db.session.query(a, b, c)
    elif x == 'b':
        query = db.session.query(d, e, f)
    else:
        print('error')
    
    if y == 'p':
        query = query.join(P)
    else y == 'q':
        query = query.join(Q)
    else:
        print('error')
    
    if x == 'a':
        query = query.group_by(a)
    elif x == 'b':
        query = query.group_by(d)
    else:
        print('error')
    

    有更好的写法吗?

    5 条回复    2019-06-01 14:34:39 +08:00
    renmu123
        1
    renmu123  
       2019-05-31 15:05:57 +08:00 via Android
    用 dict 做映射
    hjq98765
        2
    hjq98765  
       2019-05-31 15:33:32 +08:00
    都是等号判断,dict 足够了
    coolair
        3
    coolair  
    OP
       2019-05-31 17:35:06 +08:00
    @hjq98765
    @renmu123
    这种连接式的,dict 如何写,另外,我觉得问题是 x 判断了两次,这个 dict 能解决吗?
    renmu123
        4
    renmu123  
       2019-05-31 18:52:34 +08:00 via Android
    dict1={
    'a': [a, b, c]
    'b': [d, e, f]
    }
    value = dict1[x]
    query = db.session.query(value[0], value[1], value[2])

    感觉这样也不是很优雅
    sdtfll
        5
    sdtfll  
       2019-06-01 14:34:39 +08:00 via Android
    挺好的啊,朴实点,任何人都看得懂,不绕脑子,多几个字符无所谓,
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1036 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 20:32 · PVG 04:32 · LAX 12:32 · JFK 15:32
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.