将列表转换为字典引用列表

时间:2015-06-30 17:27:50

标签: python python-2.7

我有一个字符串列表:

listofdictrefs = ["ws['D4']", "ws['H72']", "ws['B4']"]

这些字符串实际上是字典引用。我想将该列表转换为变量引用,以便我可以将这些变量写入csv行:

csvwriter.writerow(listofdictrefs)

现在,当然,它将列表写为字符串。我知道python引用与该名称匹配的变量(在本例中为字典条目)。

2 个答案:

答案 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