【问题标题】:API Query, JSON, DictionaryAPI 查询、JSON、字典
【发布时间】:2017-07-16 19:00:34
【问题描述】:

我将 JSON 用于 FAA 的 API。对于下面的代码,我试图将“airport_response”变量中的获取数据打印到名为“airport_data”的字典中。然后我只想打印出名为 airport_data_keys 的密钥。目前,我得到的值不正确,序列元素#0 的长度为 128,但需要 2。任何帮助,将不胜感激。

import json
import requests
url_parameters = {}
url_parameters["format"] = "json"
base_url = 'http://services.faa.gov/airport/status/'
airport = 'DTW'
airport_response = requests.get(base_url + airport, params = url_parameters)
airport_data = airport_response.json() 
airport_data = dict(airport_response)
for k, v in airport_data.items():
    k = airport_data_keys
    print airport_data_keys

当前输出:

状态 城市 姓名 国际航空运输协会 国际民航组织 状态 延迟 天气

期望的输出:[u'status', u'ICAO', u'name', u'city', u'IATA', u'delay', u'state', u'weather']

【问题讨论】:

  • 你不应该在airport_data而不是airport_response上调用dict(..)吗?现在它将整个响应字符串视为单个项目,并且由于字典需要键/值,因此会出错。

标签: json python-2.7 api dictionary


【解决方案1】:

您的dict() 不应与response 一起使用,而应与json 一起使用,因此使用dict(airport_response) 会导致错误,您应该使用airport_data 而不是airport_data = dict(airport_data)。这是您想要的示例:

import json
import requests

url_parameters = {
    "format": "json"
}

base_url = 'http://services.faa.gov/airport/status/'
airport = 'DTW'

airport_response = requests.get(base_url + airport, params=url_parameters)
airport_data = airport_response.json()
airport_data = dict(airport_data)

airport_data_keys = []
for key, value in airport_data.items():
  airport_data_keys.append(key)

print airport_data_keys

【讨论】:

  • 太棒了!最后一件事,如果我希望密钥在 Unicode 列表中打印,我将如何执行?我尝试了 print airport_data_keys('utf8') 但它返回错误 TypeError: 'Unicode' object is not callable。
  • @SammySmith 是的,这有点帮助,我也更新了我的代码。您需要的是将每个键附加到列表中。
猜你喜欢
  • 2014-11-06
  • 2023-02-20
  • 2020-08-04
  • 2011-04-13
  • 2019-11-21
  • 1970-01-01
  • 2012-03-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多