Python中字典名称的全局变量



我正在处理一个有多个脚本的项目,所以我在一个名为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"]])