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

При работе с JSON получил список, содержащий несколько списков каждое значение которого уникальный словарь.

[[{'Label': 'Товар', 'TypeId': 1, 'Value': 'Морковь'},
 {'Label': 'Продавец', 'TypeId': 2, 'Value': 'Олег'},
 {'Label': 'Стоимость', 'TypeId': 3, 'Value': '3'}],
[{'Label': 'Товар', 'TypeId': 1, 'Value': 'Картошка'},
 {'Label': 'Продавец', 'TypeId': 2, 'Value': 'Сергей'},
 {'Label': 'Стоимость', 'TypeId': 3, 'Value': '5'}],
[{'Label': 'Товар', 'TypeId': 1, 'Value': 'Лук'},
 {'Label': 'Продавец', 'TypeId': 2, 'Value': 'Олег'},
 {'Label': 'Стоимость', 'TypeId': 3, 'Value': '2'}]]

Мне необходимо по значению словаря, содержащего имя продавца, добавлять их цену в определенный список, т.е при обходе циклом если Label == 'Продавец' и Value == 'Олег' необходимо добавить значение 'Value' из словаря, где Label = 'Стоимость'.

price_list = []
price = 0
for i in JSON :
    for j in i:
        if j['Label'] == 'Стоимость' and j['TypeId'] == 3:
            price = int(j['Value'])
    for o in i:
        if o['Label'] == 'Продавец' and o['Value'] == 'Олег':
            price_list.append(price)

Ответы (1 шт):

Автор решения: MaxU

Алгоритм решения:

  • создаете функцию, возвращающую цену из вложенного списка, но только в том случае если в этом вложенном списке существует словарь удовлетворяющий условиям: "Label == 'Продавец' и Value == 'Олег'". Если словарь с заданным продавцом не найден - вернуть None.
  • проходите циклом по исходному списку и вызываете функцию для каждого элемента, сохраняя результат в переменную. Если переменная не None - добавляете переменную в результирующий список.
→ Ссылка