Python中大量的if语句,有没有更简洁优雅的写法?
主要用途是对渐入的关键字进行“修正”,以完全匹配目标表内的查询字符。
目前是这种写法
if keystring == 'sun': keystring = 'Sun Ltd.,' if keystring == 'run': keystring = 'Running well Ltd.,' if keystring == 'fit': keystring = 'nice fitting Ltd.,'
这样简单的替换可能有几十个,长长一串特别难看。最终替换成的目标又不是一样的,也没法用函数。
求教有没有什么好看一些的写法?不用写个几十行?
Python中大量的if语句,有没有更简洁优雅的写法?
打表呗
用字典映射或策略模式替代大量if/else是常见优化手段。比如处理不同用户类型的逻辑:
def process_vip(user): return "VIP服务"
def process_normal(user): return "普通服务"
def process_guest(user): return "访客服务"
handlers = {
'vip': process_vip,
'normal': process_normal,
'guest': process_guest
}
# 使用方式
user_type = 'vip'
result = handlers.get(user_type, lambda x: "默认处理")(user_data)
如果条件判断基于值范围,可以用bisect模块:
import bisect
breakpoints = [60, 80, 90]
grades = ['D', 'C', 'B', 'A']
score = 85
grade = grades[bisect.bisect(breakpoints, score)]
对于对象类型判断,多态比if/else更优雅。用match/case(Python 3.10+)也能让代码更清晰:
match command.split():
case ["quit"]: print("退出")
case ["load", filename]: print(f"加载{filename}")
case _: print("未知命令")
总结:根据场景选合适的方法替换if链。
写个 dict 存起来。
建个 map,从 map 里面取值
那就用 switch 啊
封装成方法 用 getattr 调
python not have switch
你把正确的都放在一个 list 里面,[‘Sun Ltd’, ‘Running well Ltd’ , 'nice fitting Ltd ']
然后把用户输入的去匹配列表中的,取出来,不就行了
表驱动了解一下
代码大全,表驱动法
写个字典{‘sun’:‘Sun Ltd’}这种,for i in dict:keystring=dict[i]
corps = {‘sun’: ‘Sun Ltd.,’}
keystring = corps.get(keystring, default=‘Other’)
这和 python 也没太大关系, 你需要的是一个 dict(map)
一楼说得对
感谢各位!
之前只知道 list 和 dic,但并不清楚 dict(map),表驱动这回事。只觉得尽管可以用来判断是否在一个 pool 内,但缺乏映射关系的表达。可能也是没有系统的学习有关。已经达成。谢谢!
最近 node 写多了,忘了 python 没有了(捂脸跑)
hashmap
用字典
dict 这个主意不错
表驱动了解下。
咦,有人讲过了。


