динамический словарь Python - PullRequest
1 голос
/ 03 июня 2011

я создаю функцию, которая будет обрабатывать 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

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

1 Ответ

3 голосов
/ 03 июня 2011

(Повторная отправка в качестве ответа, потому что спрашивающий намеревается использовать идею)

В последних версиях Python есть как вложения в слова, так и в списки.Как это:

sub_info = {i.tag: i.text for i in tag}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...