我有一个字符串列表:
listofdictrefs = ["ws['D4']", "ws['H72']", "ws['B4']"]
这些字符串实际上是字典引用。我想将该列表转换为变量引用,以便我可以将这些变量写入csv行:
csvwriter.writerow(listofdictrefs)
现在,当然,它将列表写为字符串。我知道python引用与该名称匹配的变量(在本例中为字典条目)。
答案 0 :(得分:4)
如果ws
是字典变量的实际名称,那么您可以使用eval
将其写出来,尽管这很容易出错。即使在你不处理不受信任的输入的情况下(所以,让我们把安全问题放在一边)你可以检查语法和大量的语义分析到运行时静态。尽管如此:
csvwriter.writerow(eval(r) for r in listofdictrefs)
但是,如果可能的话,最好保留一个键列表并索引ws
字典
keys = ['D4', 'H72', 'B4']
csvwriter.writerow(ws[k] for k in keys)
eval
很少是正确的解决方案。
答案 1 :(得分:1)
在这种情况下,您可以使用eval
。但请务必小心使用eval
运行未经检查的代码!
listofdictrefs = ["ws['D4']", "ws['H72']", "ws['B4']"]
ws = {'D4' : 100,'H72' : 50,'B4' : 25}
for ref in listofdictrefs:
print eval(ref)
100
50
25