Python中替代case语句:检查字符串子串并返回对应支付类型
用字典替代Case语句实现支付方式判断方案
这问题我熟,用字典来替代case逻辑其实很简单,咱们一步步来实现:
实现步骤
解析原始字符串为键值对字典
首先把给定的逗号分隔字符串拆分成一个个键值对,再转换成Python字典,方便后续快速查找:payments = 'cash:yes,square_cash:no,venmo:no' # 将字符串转换为键值对字典 payment_status = dict(item.split(':') for item in payments.split(','))定义支付方式映射字典
这个字典用来存储支付方式标识(对应原始字符串里的key)和要返回的友好名称,相当于把case的每个分支用键值对来定义:payment_display_map = { 'cash': 'Cash', 'square_cash': 'Square Cash', 'venmo': 'Venmo' }遍历映射字典判断并返回结果
遍历我们定义的映射字典,检查对应支付方式的状态是否为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
相关产品推荐
相关产品推荐

