这是示例XML。
<?xml version="1.0" encoding="UTF-8"?>
<Test plan_name="test">
<Big bro="S7" sys="lolipop">
<Work name="first"></Work>
<Work name="second"></Work>
</Big>
<Big bro="S6" sys="kitkat">
<Work name="trird"></Work>
<Work name="fourth"></Work>
</Big>
</Test>
我的目标是使用每个工作名称创建字典并将其保存在列表中。
这是我的示例代码:
import xml.etree.ElementTree as ET
tree = ET.parse(line[0].rstrip()+'/stack.xml')
root = tree.getroot()
total=[]
for child in root.findall('Big'):
test=child.attrib
for children in child:
test.update(children.attrib)
total.append(test)
print total
预期产量:
[{'bro':'S7','sys':'lolipop','name':'first'},{'bro':'S7','sys':'lolipop','name':'second '},{'bro':'S6','sys':'kitkat','name':'third'},{'bro':'S6','sys':'kitkat','name': '第四'}]
但是我的输出看起来像这样:
[{'bro':'S7','sys':'lolipop','name':'second'}},{'bro':'S7','sys':'lolipop','name':'second '},{'bro':'S6','sys':'kitkat','name':'fourth'},{'bro':'S6','sys':'kitkat','name': '第四'}]
请帮帮我。
谢谢
最佳答案
您就地修改test
字典,这也将导致总共修改以前插入的引用。
它应该通过在更新之前创建一个副本来工作:
...
for child in root.findall('Big'):
test=child.attrib
for children in child:
testCopy = dict(test)
testCopy.update(children.attrib)
total.append(testCopy)
print(total)
...