关于xml:Python:赋值前的局部变量引用

Python: Local variable reference before assignment

本问题已经有最佳答案,请猛点这里访问。

我正在尝试使用elementree将XML文件转换为字典。XML文件中有各种各样的标记,但是对于每个记录,ID标记都是主键。所以我试图创建的字典将父标记作为ID,所有其他属性作为子键。但我得到一个unboundLocalError,它说"局部变量x是赋值前的引用"。代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
tree = ET.parse(xml_file)
root = tree.getroot()
temp_dict={}
def create_dict():
    test_dict = {}
    for child in root.iter():
        if subchild.tag=='ID':
                x=(child.text)
        else:
            test_dict[subchild.tag]= subchild.text
        temp_dict[x]=test_dict
    return ( temp_dict)


这不起作用,您必须用根值或condition初始化x,然后等待找到第一个subchild。您还指定了不带()x = test_dict

带条件的示例,例如:

1
2
3
4
5
6
7
8
9
10
11
12
...
temp_dict={}
x = None
def create_dict():
    ...
        if subchild.tag=='ID':
            x = test_dict
    ...
        if x:
            temp_dict[x]=test_dict

...