Вывести значение из списка словарей
Есть список со словарями
[{"ID":"100059","STATUS_ID":"F","status":"completed","shop_ID":"1021440"},
{"ID":"100060","STATUS_ID":"F","status":"completed","shop_ID":"1021576"},
{"ID":"100061","STATUS_ID":"F","status":"canceled","shop_ID":"1021841"}]
Как мне вывести значение "status" для shop_ID":"1021841"?
Ответы (3 шт):
Автор решения: arklight
→ Ссылка
Если нужно быстрое решение (в плане скорости написания), то можно обычным перебором пройтись и проверить значение
data = [{"ID": "100059", "STATUS_ID": "F", "status": "completed", "shop_ID": "1021440"},
{"ID": "100060", "STATUS_ID": "F", "status": "completed", "shop_ID": "1021576"},
{"ID": "100061", "STATUS_ID": "F", "status": "canceled", "shop_ID": "1021841"}]
for item in data:
if item["shop_ID"] == "1021841":
print(item["status"])
Вывод будет
canceled
Автор решения: Namerek
→ Ссылка
Если спсок не длинный то можно и перебором (или нужно на один раз)
Но если список горазд длинее чем 3 элемента а данных за сессию из него нужно много и разных, то лучше так
a = [{"ID":"100059","STATUS_ID":"F","status":"completed","shop_ID":"1021440"},
{"ID":"100060","STATUS_ID":"F","status":"completed","shop_ID":"1021576"},
{"ID":"100061","STATUS_ID":"F","status":"canceled","shop_ID":"1021841"}]
d = {item.pop('ID'): item for item in a}
print(
d['100060'].get('status')
)
Автор решения: nomnoms12
→ Ссылка
Можете использовать функцию filter:
li = [{"ID":"100059","STATUS_ID":"F","status":"completed","shop_ID":"1021440"},
{"ID":"100060","STATUS_ID":"F","status":"completed","shop_ID":"1021576"},
{"ID":"100061","STATUS_ID":"F","status":"canceled","shop_ID":"1021841"}]
filtered = filter(lambda x: x['shop_ID'] == '1021841', li)
statuses = [x['status'] for x in filtered]
print(*statuses)
canceled