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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 15:24:18