在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
相关产品推荐
相关产品推荐

