динамический словарь Python

1

im, создавая функцию, которая будет обрабатывать данные xml, данные могут меняться, но структура одинакова:

события (список как)  мероприятие     Информация        Дополнительная информация

функция должна создать словарь, содержащий сопоставление, в котором, если зацикливаемые данные не являются 0, тогда данные должны быть сопоставлены в словаре, это мое решение:

def parse_items(self, xml):
            """ Builds a dynamic dictionary tree wich holds each event in a dictionary
               that can be accessed by number of event """
            parsed_items = {}
            parsed_item = {}
            sub_info = {}
            for num, item in enumerate(xml):
                for tag in item:
                    if len(tag) != 0:
                        for info in tag:
                            sub_info[info.tag] = info.text
                        parsed_item[tag.tag] = sub_info
                        # Need to flush the dictionary else it will repeat info
                        sub_info = {}
                    else:
                        parsed_item[tag.tag] = tag.text
                parsed_items[num] = parsed_item
                # Need to flush the dictionary else it will repeat info
                parsed_item = {}
            return parsed_items

Мой вопрос в том, есть ли способ сделать это динамически без необходимости создавать циклы для каждого уровня данных?

  • 0
    список пониманий?
  • 0
    Я думал об этом, но я хочу, чтобы все данные отображались для быстрого доступа, поэтому я хочу использовать только словари
Показать ещё 2 комментария
Теги:
for-loop
dictionary

1 ответ

3
Лучший ответ

(Отправляясь как ответ, потому что вопросник намерен использовать эту идею)

В последних версиях Python существуют понятий dict, а также понимание списков. Вот так:

sub_info = {i.tag: i.text for i in tag}
  • 5
    Для более старых версий Python: dict(((i.tag, i.text) for i in tag))

Ещё вопросы

Сообщество Overcoder
Наверх
Меню