Python中如何将用户输入字符串转为字典变量以调用信用卡积分数据?
解决方法
不要把每个类别做成单独的变量,而是用一个总字典来映射类别名称到对应的积分字典,这样直接通过字符串键就能获取对应的内容,既安全又易维护。
重构数据结构
把所有类别字典放到一个大字典里,比如:
# 总字典:键是类别名称字符串,值是对应信用卡积分字典 category_points = { 'dining': {'amex': '4x points'}, 'grocery': {'mastercard': '3x points'} # 示例grocery的积分规则 } # 类别列表可以直接从总字典的键生成,不用手动维护 categories = list(category_points.keys())
处理用户输入
用户输入类别字符串后,直接通过总字典的键获取对应的积分信息:
purchase_type = input('Which category is it?: ') # 检查输入的类别是否存在 if purchase_type in category_points: # 获取该类别对应的信用卡积分字典 card_rules = category_points[purchase_type] print(f"{purchase_type} 类别的积分规则:") for card, rate in card_rules.items(): print(f"- {card}: {rate}") else: print(f"抱歉,没有找到 {purchase_type} 类别的积分信息")
为什么不推荐字符串转变量
虽然可以通过globals()[purchase_type]或者locals()[purchase_type]来把字符串转成变量,但这种做法存在安全风险(比如用户输入恶意字符串可能访问到程序内部的其他变量),同时代码结构混乱,后续新增类别时需要同时维护变量和类别列表,容易出错。用总字典的方式是Python中处理这类映射需求的标准做法。
内容的提问来源于stack exchange,提问作者CaptSmiley
相关产品推荐
相关产品推荐

