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

2019 年 5 月 31 日
 coolair

在写 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')

有更好的写法吗?

1621 次点击
所在节点    问与答
5 条回复
renmu123
2019 年 5 月 31 日
用 dict 做映射
hjq98765
2019 年 5 月 31 日
都是等号判断,dict 足够了
coolair
2019 年 5 月 31 日
@hjq98765
@renmu123
这种连接式的,dict 如何写,另外,我觉得问题是 x 判断了两次,这个 dict 能解决吗?
renmu123
2019 年 5 月 31 日
dict1={
'a': [a, b, c]
'b': [d, e, f]
}
value = dict1[x]
query = db.session.query(value[0], value[1], value[2])

感觉这样也不是很优雅
sdtfll
2019 年 6 月 1 日
挺好的啊,朴实点,任何人都看得懂,不绕脑子,多几个字符无所谓,

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://v2ex.ih06.com/t/569467

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX