Reputation: 23
I have loaded the following json this way:
url2 = "https://gbfs.capitalbikeshare.com/gbfs/en/station_status.json"
response2 = urllib2.urlopen(url2)
cabi_station_status = json.load(response2)
sample output of cabi_station_status:
{u'stations': [{u'eightd_has_available_keys': False,
u'is_installed': 1,
u'is_renting': 1,
u'is_returning': 1,
u'last_reported': 1489309320,
u'num_bikes_available': 5,
u'num_bikes_disabled': 0,
u'num_docks_available': 10,
u'num_docks_disabled': 0,
u'station_id': u'1'},
{u'eightd_has_available_keys': False,
u'is_installed': 1,
u'is_renting': 1,
u'is_returning': 1,
u'last_reported': 1489309256,
u'num_bikes_available': 5,
u'num_bikes_disabled': 0,
u'num_docks_available': 6,
u'num_docks_disabled': 0,
u'station_id': u'2'}
I cannot figure out how to access the value of "num_bikes_available" of certain stations. When I try cabi_station_status["stations"]["station_id"][1]
it does not return anything. Pseudo code for my ideal output would be to get the "num_bikes"available" when "station_id" == 1. and return an integer, in this case, 5.
Upvotes: 1
Views: 74
Reputation: 1155
cabi_station_status["stations"]
is a list.
You should use a loop to iterate over each station and from each station get num_bikes_available
.
each_station['num_bikes_available']
Your solution would look like:
for each_station in cabi_station_status["stations"]:
if each_station['station_id'] == '1':
return each_station['num_bikes_available']
Upvotes: 1
Reputation: 1840
for station in cabi_station_status['stations']:
if station['station_id'] == '1':
print(station['num_bikes_available'])
Upvotes: 0
Reputation: 599926
cabi_station_status["stations"]
is a list; you need to refer to its elements by index, not key.
cabi_station_status["stations"][0]["num_bikes_available"]
Upvotes: 0