使用案例
我在Python中制作一个工厂类型脚本,它使用XML并基于该XML,从特定工厂返回信息。我创建了一个文件,我称之为FactoryMap.json,它存储了可以在XML中找到项目的位置与相应工厂之间的映射。
问题
我的映射文件中的JSON如下所示:
{
"path": "['project']['builders']['hudson.tasks.Shell']",
"class": "bin.classes.factories.step.ShellStep"
}
path 一旦转换为dict,就可以在xml中找到该元素。
class 是工厂的相应路径,可以使用该元素信息。
为了对此做任何事情,我需要深入到字典结构中,如果我不必从文件中绘制这些信息,那么这将是这样的(注意关键参考='路径来自我的json'):
configDict={my xml config dict}
for k,v in configDict['project']['builders']['hudson.tasks.Shell'].iteritems():
#call the appropriate factory
问题在于,如果我将路径值查找为字符串或列表,我就无法在' iteritems'()中使用它:
path="['project']['builders']['hudson.tasks.Shell']" #this is taken from the JSON
for k,v in configDict[path].iteritems():
#call the appropriate factory
这会返回一个关键错误,指出我不能使用字符串作为键值。如何将变量用作该python字典的键?
答案 0 :(得分:0)
您可以使用eval
:
eval( "configDict"+path )
答案 1 :(得分:0)
您可以使用eval()
函数来评估实际dict对象与字符串的路径。这是我所说的:
path="['project']['builders']['hudson.tasks.Shell']" #this is taken from the JSON
d = eval("configDict%s" % path)
for k,v in d.iteritems():
#call the appropriate factory