2017-02-10 95 views
0

使用案例在字典查找中使用Python列表或字符串?

我正在Python中的工廠類型的腳本消耗XML和基於該XML,返回從特定工廠的信息。我創建了一個稱爲FactoryMap.json的文件,該文件存儲了可以在XML中找到項目的位置與相應工廠之間的映射關係。

問題

的JSON在我的映射文件的樣子:

{ 

     "path": "['project']['builders']['hudson.tasks.Shell']", 
     "class": "bin.classes.factories.step.ShellStep" 

} 

路徑是其中的元素可以在XML一旦其轉換爲一個字典中找到。

是可以使用該元素信息的工廠的相應路徑。

爲了做到這一點,我需要下載到字典結構中,如果我不必從文件中繪製該信息(請注意從我的關鍵引用='路徑' 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

是否要求路徑值具有如此複雜的語法?或者你是否允許將它改變爲某些易於解析的東西? – kmkaplan

回答

0

你可以使用eval

eval("configDict"+path) 
+0

這樣做了,謝謝! – James

0

可以使用eval()功能到您的路徑計算爲實際的字典對象VS的字符串。類似這樣的是我所指的:

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