Python代码重构:循环中变量类型转换与值存储问题
解决方法
你遇到的问题是循环里的item只是临时变量,赋值给它不会修改原来的AD、RSM变量。这里有两种可行的方案:
方案1:用主字典存储所有子字典(推荐)
这种方式更整洁,方便后续统一管理所有变量字典,也避免全局变量混乱:
import pandas as pd # 定义需要读取的工作表名称列表 sheet_names = ["AD", "RSM"] # 初始化主字典用来存放所有子字典 all_dicts = {} for name in sheet_names: df = pd.read_excel('test.xlsx', name) all_dicts[name] = dict(zip(df.Key, df.Value)) # 调用时直接通过主字典的键访问对应字典 AD_dict = all_dicts["AD"] RSM_dict = all_dicts["RSM"]
方案2:直接生成全局变量(不推荐)
如果一定要单独生成AD、RSM这类全局变量,可以用globals()函数,但这种方式会降低代码可读性,不建议在复杂场景中使用:
import pandas as pd sheet_names = ["AD", "RSM"] for name in sheet_names: df = pd.read_excel('test.xlsx', name) globals()[name] = dict(zip(df.Key, df.Value)) # 此时可直接使用AD、RSM变量 print(AD) print(RSM)
原代码不生效的原因
你的循环里,item是从列表中取出的字符串副本,给item赋值字典只是修改了这个临时副本,和最初定义的AD、RSM变量没有关联,所以循环结束后原变量还是初始的字符串值。
内容的提问来源于stack exchange,提问作者superavd88
相关产品推荐
相关产品推荐

