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

Python中替代case语句:检查字符串子串并返回对应支付类型

用字典替代Case语句实现支付方式判断方案

这问题我熟,用字典来替代case逻辑其实很简单,咱们一步步来实现:

实现步骤

  1. 解析原始字符串为键值对字典
    首先把给定的逗号分隔字符串拆分成一个个键值对,再转换成Python字典,方便后续快速查找:

    payments = 'cash:yes,square_cash:no,venmo:no'
    # 将字符串转换为键值对字典
    payment_status = dict(item.split(':') for item in payments.split(','))
    
  2. 定义支付方式映射字典
    这个字典用来存储支付方式标识(对应原始字符串里的key)和要返回的友好名称,相当于把case的每个分支用键值对来定义:

    payment_display_map = {
        'cash': 'Cash',
        'square_cash': 'Square Cash',
        'venmo': 'Venmo'
    }
    
  3. 遍历映射字典判断并返回结果
    遍历我们定义的映射字典,检查对应支付方式的状态是否为yes,找到第一个符合条件的就返回对应的友好名称:

    def get_selected_payment(payments_str):
        payment_status = dict(item.split(':') for item in payments_str.split(','))
        payment_display_map = {
            'cash': 'Cash',
            'square_cash': 'Square Cash',
            'venmo': 'Venmo'
        }
        for key, display_name in payment_display_map.items():
            if payment_status.get(key) == 'yes':
                return display_name
        # 如果没有任何支付方式标记为yes,可返回默认值或None
        return None
    
    # 测试调用
    print(get_selected_payment(payments))  # 输出: Cash
    

方案优势

  • 相比复杂的if-elif链(模拟case),用字典映射的方式更简洁易读
  • 后续新增支付方式时,只需要在payment_display_map里添加新的键值对即可,扩展性极强
  • 逻辑清晰,每一步的职责明确,维护成本低

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:09:20