我正在处理一个有多个脚本的项目,所以我在一个名为settings.py的文件中设置了一组全局变量。一个全局变量名为dataSource,它在两个不同的数据源之间切换,我们称它们为"a"one_answers"B"。
global dataSource
dataSource="A"
我有两个不同的字典,一个用于每个数据源,它将通用变量名映射到A和B中的特定变量名(所有数据都在同一个数据帧中,只有A和B的特定名称,命名没有模式(。
A={"GDP":"GDP 1", "Inflation":"A Inf", "Unemployment": "Unemp"}
B={"GDP":"Gross Domestic Product","Inflation":"Infl","Unemployment":"Unemployment B"}
我的脚本的其余部分只使用通用字典关键字名称作为变量,但我希望能够使用切换所有输入
import settings
df[settings.dataSource["GDP"]]
我本以为Python会把它读成
df[A["GDP"]] --> df["GDP 1"]
相反,我得到了一个TypeError
string indices must be integers, not str
我知道这是因为Python将A视为一个字符串,而不是一段要执行的代码。我试着玩exec((,但似乎无济于事。关于如何调试/如何以不同的方式编写代码,有什么想法吗?
您正在读取一个字符串,并期望python将其理解为字典。
您最好将字典本身存储在配置文件中,然后根据需要导入这些字典。
settings.py
_A = {"GDP":"GDP 1", "Inflation":"A Inf", "Unemployment": "Unemp"}
_B = {"GDP":"Gross Domestic Product","Inflation":"Infl","Unemployment":"Unemployment B"}
datasource = _A # change this to _B when you need to
main.py
from settings import datasource
print(df[dataSource["GDP"]])