'Return JSON data only if specific key exist
I'm trying to parse through a JSON file and return results only if specific key exists. Here is the example of the JSON:
"phone_numbers": [
{
"id": "123456",
"number": "+11234567890",
"source": "external",
"status": "available",
"number_type": "toll",
"capability": [
"incoming",
"outgoing"
],
"location": "United States",
"assignee": {
"id": "1234",
"name": "John Smith",
"extension_number": 7890,
"type": "user"
},
"site": {
"id": "123456",
"name": "COPQ"
},
"emergency_address": {
"country": "US",
"address_line1": "Testing",
"address_line2": "Testing",
"city": "Testing",
"state_code": "PA",
"zip": "19428"
},
"emergency_address_status": 1
},
So for above I only want to return record if key 'assignee' is present, if not just bypass it. For now I'm just trying to count how many records have 'assignee' but can't get it to work. Here is what I'm using:
counter = 0
for i in user_data['phone_numbers']:
if i['assignee']:
counter += 1
print(counter)
Solution 1:[1]
You can use in keyword. The in keyword can also be used to check if a value is present in a sequence.
For example,
colors = ["red", "blue", "green"]
print("red" in colors) # True
The solution of your problem is as below-
records = []
for d in user_data["phone_numbers"]:
if "assignee" in d:
records.append(d)
print(len(records))
Solution 2:[2]
trying to count how many records have 'assignee'
You can use a generator expression to get that count
sum(1 for p in data["phone_numbers"] if "assignee" in p)
To get a list of all numbers with assignee keys, then a list-comprehension
assignees = [p in data["phone_numbers"] if "assignee" in p]
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 | |
| Solution 2 | OneCricketeer |
