Как достать значение одного словаря, по значению другого если оба они являются элементами списка?
При работе с 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- добавляете переменную в результирующий список.