Необходимо посчитать количество элементов JSON с определенным значением?
JSON:
x = {"order": {"id": 1, "statuscode": "SUCCESS_ENDED"},
{"order": {"id": 2, "statuscode": "PROCESSING"},
{"order": {"id": 3, "statuscode": "SUCCESS_ENDED"},
{"order": {"id": 4, "statuscode": "SUCCESS_ENDED"}
Нужно через цикл вывести на print кол-во элементов, у которых statuscode: SUCCESS_ENDED
Ответы (1 шт):
Автор решения: Dmitry
→ Ссылка
У вас переменная x "слегка" непонятна. На JSON она слаба похожа. Давайте наченем с того что приведем ее хоть к какому то типу данных, например вот так:
x = [{"order": {"id": 1, "statuscode": "SUCCESS_ENDED"}},
{"order": {"id": 2, "statuscode": "PROCESSING"}},
{"order": {"id": 3, "statuscode": "SUCCESS_ENDED"}},
{"order": {"id": 4, "statuscode": "SUCCESS_ENDED"}}]
Для python это тип данных list, что является итерируемым типом. В каждом элементе list лежит order со значениями. Давайте по ним пробежимся и посчитаем:
>>> count = 0
>>> for i in x:
... for order, value in i.items():
... if value["statuscode"] == "SUCCESS_ENDED":
... count+=1
...
>>> count
3
И еще один вариант, если мы остаемся при своем и считаем, что переменная x такая какая есть, то ее хотя бы надо принять за строку:
x = '''[{"order": {"id": 1, "statuscode": "SUCCESS_ENDED"},
{"order": {"id": 2, "statuscode": "PROCESSING"}
{"order": {"id": 3, "statuscode": "SUCCESS_ENDED"}
{"order": {"id": 4, "statuscode": "SUCCESS_ENDED"}'''
и с помощью модуля re найти все совпадения с SUCCESS_ENDED
>>> import re
>>> pattern = r"SUCCESS_ENDED"
>>> all_mathces= len(re.findall(pattern, x))
>>> all_mathces
3