如何将可变变量存入字典并通过类似方式调用对应变量
动态拼接变量名调用的实现方案
你代码里的data_i不会被自动解析为对应编号的data_1/data_2变量,Python默认不会把拼接生成的字符串识别为变量名,有两种可落地的实现方式:
- 临时兼容方案:读取作用域变量字典(不推荐长期使用)
Python内置的globals()(全局环境)和locals()(当前函数/代码块局部环境)会返回存储当前所有变量的字典,你可以直接用拼接好的变量名当key取值,修改后的代码如下:N = 10 d = {} # 注意你的变量是从data_1开始编号的,range默认从0起始,这里要调整范围 for i in range(1, N+1): d[f'data_{i}'] = globals()[f'data_{i}']风险提示:这种写法可读性极差,后续维护时很难追踪变量的调用逻辑,还容易因为作用域混淆取到错误的值,只适合临时跑一次性脚本用。
- 最优实践:从定义阶段就用字典存储
最稳妥的方式是根本不要定义data_1/data_2这类带编号的零散变量,读取fits数据的时候直接写入字典,完全不需要做动态变量名解析,从根源上避免问题:
后续要调用对应数据,直接用N = 10 d = {} for i in range(1, N+1): # 对应替换成你fits.getdata的实际参数即可,如果文件路径按编号规则命名也可以直接拼接路径 d[f'data_{i}'] = fits.getdata(...)d['data_5']就能拿到对应编号的数据集,逻辑清晰也不会出现变量解析错误。
内容的提问来源于stack exchange,提问作者Jeicot Delgado
相关产品推荐
相关产品推荐

