You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在JSON数据映射场景中,应选用if-else还是match-case?

该用if-else还是match-case处理这个JSON字段映射场景?

两种写法都能实现需求,但选择哪个取决于你的Python版本兼容要求和代码可读性偏好:

用if-elif-else的实现

优势是兼容性强(支持所有Python版本),语法简单直接,对新手友好,逻辑清晰无额外学习成本:

def map_shipping_quantity(input_data):
    shipping_node = input_data["data"]["shippingNode"]
    supply_qty = input_data["data"]["availableQuantity"]["supplyQuantity"]
    
    if shipping_node.startswith(("RL", "RS")):
        return {"rlQuantity": supply_qty}
    elif shipping_node == "WS1002":
        return {"wsQuantity": supply_qty}
    elif shipping_node.startswith("AS"):
        return {"asQuantity": supply_qty}
    else:
        return {"okQuantity": supply_qty}

用match-case的实现(Python 3.10+)

如果你的项目基于Python 3.10或更高版本,更推荐用match-case。它的模式匹配语法能让分支逻辑更直观,代码结构更整洁,尤其适配这种多条件的字符串匹配场景:

def map_shipping_quantity(input_data):
    shipping_node = input_data["data"]["shippingNode"]
    supply_qty = input_data["data"]["availableQuantity"]["supplyQuantity"]
    
    match shipping_node:
        case node if node.startswith(("RL", "RS")):
            return {"rlQuantity": supply_qty}
        case "WS1002":
            return {"wsQuantity": supply_qty}
        case node if node.startswith("AS"):
            return {"asQuantity": supply_qty}
        case _:
            return {"okQuantity": supply_qty}

总结

  • 若需兼容Python 3.10以下版本,或团队更习惯传统条件判断:选if-else
  • 若项目用Python 3.10+,追求更清晰的代码结构:选match-case

内容的提问来源于stack exchange,提问作者MyDream

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 16:25:07