'How to only interact with objects that are after specific object value in Json using Python?
I'm collecting data that is added to a JSON sequentially, but since they are all added together, they don't come well separated, so I need to get around this difficulty.
My JSON follows this pattern:
{
"content": {
"matchFacts": {
"events": {
"events": [
{
"type": "Substitution",
"time": 33
},
{
"type": "Card",
"time": 34
},
{
"type": "Goal",
"time": 38
},
{
"type": "Card",
"time": 43
},
{
"type": "AddedTime",
"time": 45
},
{
"type": "Goal",
"time": 45
},
{
"type": "Half",
"time": 45
},
{
"type": "Substitution",
"time": 46
},
{
"type": "Substitution",
"time": 58
},
{
"type": "Substitution",
"time": 58
},
{
"type": "Goal",
"time": 71
},
{
"type": "Substitution",
"time": 74
},
{
"type": "Substitution",
"time": 74
},
{
"type": "Substitution",
"time": 77
},
{
"type": "Substitution",
"time": 77
},
{
"type": "Substitution",
"time": 77
},
{
"type": "Substitution",
"time": 83
},
{
"type": "AddedTime",
"time": 90
},
{
"type": "Card",
"time": 90
},
{
"type": "Half",
"time": 90
}
]
}
}
}
}
Let's say I need to collect only the "type": "Goal" that are before the first "type": "Half" appears, so I do it like this:
search_goals = response_json['content']['matchFacts']['events']['events']
goals_ht = 0
for event in search_goals:
if (event['type'] == 'Half'):
break
elif (event['type'] == 'Goal'):
goals_ht += 1
But what about when I need to collect only "type": "Goal" that are AFTER the first "type": "Half", how should I proceed?
Solution 1:[1]
Given your structure, a possible solution is to create a False flag that flips to True once a Half event is reached, then simply check for that flag when doing something to the Goal events:
search_goals = response_json['content']['matchFacts']['events']['events']
reached_ht = False
for event in search_goals:
if event['type'] == 'Half':
reached_ht = True
elif event['type'] == 'Goal' and reached_ht:
# ...
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 |
