2017-03-12 82 views
1

我已加载以下JSON这种方式:cabi_station_status的访问JSON值

url2 = "https://gbfs.capitalbikeshare.com/gbfs/en/station_status.json" 
response2 = urllib2.urlopen(url2) 
cabi_station_status = json.load(response2) 

输出样本:

{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]

它不会返回任何东西。我理想的输出伪代码将获得“num_bikes”可用”时,‘station_id’== 1,并返回一个整数,在这种情况下,5

回答

0
for station in cabi_station_status['stations']: 
    if station['station_id'] == '1': 
     print(station['num_bikes_available']) 
+0

即工作!我是如此接近我的尝试: '关键在cabi_station_status():] 如果cabi_station_status.get( “station_id”, “”)== 1: 打印[ “num_bikes_available”' – CWill

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'] 
0

cabi_station_status["stations"]我是一份清单;你需要通过索引来引用它的元素,而不是关键。

cabi_station_status["stations"][0]["num_bikes_available"] 
+0

嗯,所以没办法选择num_bikes_available基于掀起了station_id的?索引不是1:1的站,即,索引12 = station_id:14和索引45 = station_id:52 – CWill