Python中替换多分支if-elif实现societe_var映射bu_list的高效方法
实现方案
方案1:字典映射(全Python版本兼容,最推荐)
这是Python中替换多分支等值判断的最常用优雅方案,利用字典的键值映射关系直接取值,用.get()方法处理默认分支,代码如下:
# 先定义映射关系 bu_map = { 'apple': bu_list_apple, 'banana': bu_list_banana, 'pear': bu_list_pear } # 直接取值,第二个参数为匹配不到时的默认值 bu_list = bu_map.get(societe_var, bu_list_cherry)
优势:
- 代码更简洁,避免了多层
if-elif嵌套 - 后续新增/修改映射规则只需调整字典内容,无需改动逻辑代码
- 执行效率更高,字典取值是O(1)时间复杂度,多分支判断是O(n)
方案2:match-case 结构(Python 3.10+ 版本支持)
如果你的运行环境支持Python 3.10及以上版本,也可以用官方新增的结构化模式匹配语法,语义更清晰:
match societe_var: case 'apple': bu_list = bu_list_apple case 'banana': bu_list = bu_list_banana case 'pear': bu_list = bu_list_pear case _: bu_list = bu_list_cherry
适用场景:如果每个分支除了赋值之外还有其他额外的处理逻辑,用match-case会比字典映射更灵活。
内容的提问来源于stack exchange,提问作者Kair0
相关产品推荐
相关产品推荐

