我有一個python腳本,用於解析包含部分信息的XML文件以及腳本應該對信息執行的命令。Python中的多維字典
<?xml version="1.0"?>
<servicexml>
<action>
<command>Add</command>
<partnumber>1223</partnumber>
<partname>Battery</partname>
<partdescription>Holds charge</partdescription>
</action>
<action>
<command>Add</command>
<partnumber>4444</partnumber>
<partname>Pump</partname>
<partdescription>Pumps stuff</partdescription>
</action>
</servicexml>
我試圖寫一個Python腳本,將去掉所有相關信息,並把它變成一本字典,所以我可以通過鍵查找值。目前,我的代碼只能保存一個維度 - 這意味着在我的XML文件中,最後一個標記是寫入的唯一值。如何在我的字典中動態分配維度以保存來自XML文件的多個操作?這樣我可以訪問每個零件序列的關鍵值。
基於大衛艾伯的回答:
我不得不改變部分進口模塊但是他的方法仍然使用這裏是我的Python代碼
from lxml import etree
from StringIO import StringIO
actionInformation = []
tagsOfInterest = ['command','partnumber','partname','partdescrip']
tagDataOfIntrest = {}
xmlFile = "parts.xml"
context = etree.iterparse(xmlFile)
for action, elem in context:
if elem.tag in tagsOfInterest:
actionInformation.append([elem.tag,elem.text])
tagDataOfInterest = dict(actionInformation)
print tagDataOfInterest
解決方案。 from lxml import etree
xmlFile = "parts.xml"
context = etree.parse(xmlFile)
actions = context.findall('action')
parsed = [{field.tag: field.text for field in action} for action in actions]
from lxml import etree
xmlFile = "parts.xml"
context = etree.parse(xmlFile)
actions = context.findall('action')
parsed = [{field.tag: field.text for field in action} for action in actions]
您可以創建詞典,其中每個列表元素對應於'action's的一個列表。例如,你應該有'[{'command':'Add','partnumber':1223,'partname':'Battery','partdescription':'Holds charge'},{'command':'Add', 'partnumber':4444,'partname':'Pump','partdescription':'Pumps stuff'}]'。有沒有像這樣的聲音對你有好處? – 2012-02-15 16:38:06
這基本上是我試圖完成的。通過這種方式,我可以輕鬆訪問任何個人操作鍵 – user1130161 2012-02-15 16:41:37