python - 从具有字典名称的列表中迭代字典

标签 python csv dictionary

我正在尝试迭代列表,列表中的变量是字典名称,然后迭代这些字典中的键 我的代码是这样的:

IA = {"V":"CVolt","T":"CTemp"}
CLR = {"V":"CLR_Volt","T":"CLR_Temp"}
GT = {"V":"GT_CVolt","T":"GT_Temp"}
PP = ["IA","GT","CLR"]
AFT = {"IA":0,"GT":0,"CLR":0}
AFV = {"IA":0,"GT":0,"CLR":0}
Voltage=0
Vs ={"IA":0.85,"GT":0.85,"CLR":0.85}
Tempreture = 0
Ts ={"IA":30,"GT":30,"CLR":30}
EAK = 7e3
Stress = {"IA":0,"GT":0,"CLR":0}
C = 1
Seff={"IA":0,"GT":0,"CLR":0}
csv.DictReader
with open(File,"r+") as Fin:
    reader = csv.DictReader(Fin, dialect='excel')
    for line in reader:
        for i in PP:
            AFT[i] = math.exp(EAK*((1/Ts[i])-(1/float(line[i["T"]]))))
            AFV[i] = math.exp(float(line[i["T"]])-Vs[i])
            Stress[i] = AFT[i] * AFV[i]
            Seff[i] = Seff[i]+Stress[i]

我的问题是如何获取字典中的键值 i

AFT[i] = math.exp(EAK*((1/Ts[i])-(1/float(line[i["T"]]))))

在这种情况下,在第一个循环中我想得到 line["CTemp"]

欢迎任何建议或不同的方法

最佳答案

你可以使用Python内置的locals()功能:

>>> IA = {"V":"CVolt","T":"CTemp"}
>>> locals()['IA']
{'T': 'CTemp', 'V': 'CVolt'}
>>> locals()['IA']['T']
'CTemp'

或者更好,将变量放在一个大字典中,如下所示:

>>> vars = {
    'IA': {"V":"CVolt","T":"CTemp"},
    'CLR': {"V":"CLR_Volt","T":"CLR_Temp"},
    ...
}
>>> vars['IA']
{'T': 'CTemp', 'V': 'CVolt'}
>>> vars['IA']['T']
'CTemp'

感谢@damienfrancois 与本地人一起完成答案:

math.exp(EAK*((1/Ts[i])-(1/float(line[locals()[i]['T']]))))

使用变量字典:

math.exp(EAK*((1/Ts[i])-(1/float(line[vars[i]['T']]))))

关于python - 从具有字典名称的列表中迭代字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21067054/

相关文章:

python - 带共享 session 的 Django ORM 的 Tornado WebSocket

python - 为什么我不能从函数中获取 Pandas 单元格的类型?

MySQL LOAD DATA [LOCAL] INFILE 路径名语法错误

python - 如何在我的预订系统中写入我的 CSV 文件 [STUCK]

python - 将两个列表映射到一个倒排字典中

dictionary - 在不知道键的情况下快速引用字典键和值

python - 返回列表中的列表,包括元组列表中最长的单词

mysql - 无法从 csv 加载到 mysql 表?

python - 创建一个 "dictionary of sets"

Python 异步强制超时