@Yrets169

Как в словарь добавить новый элемент по условию?

#словарь товаров
goods_dict = [
        {'id': '1', 'goods': 'macbook 16 pro', 'brand': 'Apple'},
         {'id': '2', 'goods': 'ThinkPad X1 Extreme Gen 3', 'brand': 'lenovo'},
         {'id': '3', 'goods': 'XPS 17 9710 Silver', 'brand': 'Dell'}
         ]
#лист акссесуаров
add_lists = [
        ['Apple','стилус'],
    ['lenovo','коврик'],
    ['hp','мышь'],
    ['asus','флешка']
]

list_goods = []
for val in add_lists:
    for good in goods_dict:
        if good['brand'] == val[0]:
            good['accessory'] = val[1]
            list_goods.append(good)
        if good['brand'] != val[0]:
            good['accessory'] = 'none'
            list_goods.append(good)


получаю результат:
[
    {'id': '1', 'goods': 'macbook 16 pro', 'brand': 'Apple', 'accessory': 'none'},
    {'id': '2', 'goods': 'ThinkPad X1 Extreme Gen 3', 'brand': 'lenovo', 'accessory': 'none'},
    {'id': '3', 'goods': 'XPS 17 9710 Silver', 'brand': 'Dell', 'accessory': 'none'},
    {'id': '1', 'goods': 'macbook 16 pro', 'brand': 'Apple', 'accessory': 'none'},
    {'id': '2', 'goods': 'ThinkPad X1 Extreme Gen 3', 'brand': 'lenovo', 'accessory': 'none'},
    {'id': '3', 'goods': 'XPS 17 9710 Silver', 'brand': 'Dell', 'accessory': 'none'},
    {'id': '1', 'goods': 'macbook 16 pro', 'brand': 'Apple', 'accessory': 'none'},
    {'id': '2', 'goods': 'ThinkPad X1 Extreme Gen 3', 'brand': 'lenovo', 'accessory': 'none'},
    {'id': '3', 'goods': 'XPS 17 9710 Silver', 'brand': 'Dell', 'accessory': 'none'},
    {'id': '1', 'goods': 'macbook 16 pro', 'brand': 'Apple', 'accessory': 'none'},
    {'id': '2', 'goods': 'ThinkPad X1 Extreme Gen 3', 'brand': 'lenovo', 'accessory': 'none'},
    {'id': '3', 'goods': 'XPS 17 9710 Silver', 'brand': 'Dell', 'accessory': 'none'}
]


Как добавить новый элемент в словарь по условию, в котором к словарю добавляется новый элемент accessory и получить результат:

[
{'id': '1', 'goods': 'macbook 16 pro', 'brand': 'Apple', 'accessory': 'стилус'},
{'id': '2', 'goods': 'ThinkPad X1 Extreme Gen 3', 'brand': 'lenovo', 'accessory': 'коврик'},
{'id': '3', 'goods': 'XPS 17 9710 Silver', 'brand': 'Dell', 'accessory': 'none'},
]
  • Вопрос задан
  • 144 просмотра
Решения вопроса 1
AlexNest
@AlexNest Куратор тега Python
Работаю с Python/Django
Проблема в том, что из-за повторных проходов данные затираются.
Добавьте проверку, что значение accessory пустое.
goods_dict = [
        {'id': '1', 'goods': 'macbook 16 pro', 'brand': 'Apple'},
         {'id': '2', 'goods': 'ThinkPad X1 Extreme Gen 3', 'brand': 'lenovo'},
         {'id': '3', 'goods': 'XPS 17 9710 Silver', 'brand': 'Dell'}
         ]
#лист акссесуаров
add_lists = [
        ['Apple','стилус'],
        ['lenovo','коврик'],
        ['hp','мышь'],
        ['asus','флешка']
       ]
for item in add_lists:
        item_brand = item[0]
        item_name = item[1]
        print(item_brand)
        print('-',item_name)
        for good in goods_dict:
                good_brand = good['brand']
                print('--',good_brand)
                if not good.get('accessory'):
                        if good_brand == item_brand:
                                good['accessory'] = item_name
                        else:
                                good['accessory'] = None
for good in goods_dict:
        print(good)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы