gpt4 book ai didi

python - 在 Python 中从 XML 创建字典列表

转载 作者:太空宇宙 更新时间:2023-11-03 16:25:52 24 4
gpt4 key购买 nike

这是示例 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': 'fourth'}]

但我的输出如下所示:

[{'bro': 'S7', 'sys': 'lolipop', 'name': 'second'}, {'bro': 'S7', 'sys': 'lolipop', 'name': 'second'}, {'bro': 'S6', 'sys': 'kitkat', 'name': 'fourth'}, {'bro': 'S6', 'sys': 'kitkat', 'name': 'fourth'}]

请帮帮我。谢谢

最佳答案

您就地修改了 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)
...

关于python - 在 Python 中从 XML 创建字典列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37983095/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com