我以这种方式加载了以下json:
url2 = "https://gbfs.capitalbikeshare.com/gbfs/en/station_status.json"
response2 = urllib2.urlopen(url2)
cabi_station_status = json.load(response2)
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'}
我无法弄清楚如何访问某些电台的“num_bikes_available”值。当我尝试cabi_station_status["stations"]["station_id"][1]
它不会返回任何内容。我的理想输出的伪代码是在“station_id”== 1时获得“num_bikes”,并返回一个整数,在本例中为5。
答案 0 :(得分:1)
cabi_station_status["stations"]
是一个列表。
您应该使用循环迭代每个电台,并从每个电台获取num_bikes_available
。
each_station['num_bikes_available']
您的解决方案如下:
for each_station in cabi_station_status["stations"]:
if each_station['station_id'] == '1':
return each_station['num_bikes_available']
答案 1 :(得分:0)
cabi_station_status["stations"]
是一个列表;你需要通过索引来引用它的元素,而不是键。
cabi_station_status["stations"][0]["num_bikes_available"]
答案 2 :(得分:0)
for station in cabi_station_status['stations']:
if station['station_id'] == '1':
print(station['num_bikes_available'])