Как объединить 2 словаря по id и записать их в файл xml - PullRequest
0 голосов
/ 14 июля 2020

У меня есть информация о продукте в различных объектах, описание продукта и основные характеристики продукта. у обоих этих объектов есть product_id, поэтому я могу связать их вместе.

decription_items - это список словарей, например:

[
 {'product_id': '123', 'description': 'desc1', 'price': '$40' },
 {'product_id': '124', 'description': 'desc2', 'price': '$50' },
 {'product_id': '125', 'description': 'desc3', 'price': '$99' },
] 

product_highlight_dict - словарь (product_id, ProductHighlight)

{
 '123': <product_123_highligh>,
 '124': <product_124_highligh>,
 '125': <product_125_highligh>,
}

и, наконец, ProductHighlight - это класс:

class ProductHighlight:
    def __init__(self, product_id, location, area):
        self.product_id = product_id
        self.location = location
        self.area = area

Я хочу объединить эти два типа и записать их в xml документ, в следующем коде я могу объединить два типа:

for description_item in self.decription_items:
    product_id = .get('product_id')
        if product_id:
            product_highlight = spider.product_highlight_dict.get(product_id)
            # I don't know how to combine description_item and 
            # product_highlight and write them to an xml

Обновление

Я использую следующий код для записи product_highlight_dict в xml. Я не знаю, как включить description_item в следующий лог c?

    highlights = []
    for k in self.product_highlight_dict:
        highlights.append(vars(self.product_highlight_dict[k]))

    xml = dicttoxml.dicttoxml(highlights, custom_root='product_highlights')
    file = open('filename', "wb")
    file.write(xml)
    file.close()

1 Ответ

1 голос
/ 14 июля 2020

Вы можете использовать description_items для создания словаря с информацией description и price для каждого продукта:

product_data = {}
for description_item in description_items:
    product_id = description_item["product_id"]
    product_data[product_id] = description_item

Затем вы можете использовать его в своем коде следующим образом

highlights = []
for product_id, product_highlight in self.product_highlight_dict.items():
    highlight = vars(product_highlight)
    if product_id in product_data:
        highlight.update(product_data[product_id])
    highlights.append(highlight)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...