Как сделать цикл, который дает уникальные значения в качестве вывода для XML с Elementtree в Python? - PullRequest
0 голосов
/ 27 сентября 2019

Я хочу создать список со всеми значениями идентификатора / атрибута элемента на основе условий в подэлементах.При создании цикла выводом является список со значением атрибута (id) для каждого подэлемента.Здесь мне просто нужно значение атрибута (id) в элементе 'playevent' один раз для каждого родительского элемента.

Вот часть файла XML:

</file>
    <ALL_INSTANCES>
        <playerevent id="1">
            <starttime></starttime>
            <endtime></endtime>
            <player>/player>
            <quarter></quarter>
            <result>
                <kind number="1"></kind>
                <means number="1"></means>
            </result>
        </playerevent>
        <playevent id="2" type=">
            <starttime></starttime>
            <endtime></endtime>
            <zone></zone>
            <label>
                <group></group>
                <text>/text>
            </label>
            <label>
                <group></group>
                <text></text>
            </label>

            <label>
                <text></text>
            </label>
            <label>
                <group></group>
                <text></text>
            </label>
            <score team=""></score>
            <score team=""></score>
            <label>
                <text></text>
            </label>
            <team></team>
        </playevent>

Edit: This is another element with subelement 'playevent'

<playevent id="10" type="">
            <starttime></starttime>
            <endtime></endtime>
            <zone></zone>
            <label>
                <group></group>
                <text></text>
            </label>
            <label>
                <group></group>
                <text></text>
            </label>
            <label>
                <group>/group>
                <text></text>
            </label>
            <label>
                <text></text>
            </label>
            <score team=""></score>
            <score team=""></score>
            <previousevent>
            </previousevent>
            <label>
                <text></text>
            </label>
            <label>
                <text></text>
            </label>
            <team></team>
        </playevent>

Я пыталсянесколько решений, таких как создание функций, которые дают уникальные значения в списке.Я попытался .findall (), чтобы изменить цикл.Но все результаты одинаковы.

    for subelem1 in elem:
        for subelem2 in subelem1:
            for subelem2 in subelem1.findall('previousevent'):
                if subelem2.tag == 'previousevent':
                    list = subelem1.get('id')
                    print(list)

Текущий выход: 2 2 2 2 2 2 2 2 2 2 2 2

Ожидаемый результат: 2

...