提取 API 查询结果并将其输出为列表或字典的函数

Function to extract API queries results and output them as list or dictionary

我需要一个 API 调用的结果列表,该调用使用 gql 作为 ID 字典。假设我有一个位置字典,例如:{"tokyo": "111", "rio": "112", "LA": "113"},我需要在 API 上查询每个位置的信息,例如:

    transport = AIOHTTPTransport(url=API_URL, headers=HEADERS)
    client = Client(transport=transport)
    params = {
        "id": "111"
        "time": {"from": "2022-05-10", "to": "2022-05-19"},
        }
    q = gql(query)
    r = client.execute(q, variable_values=params)
    pprint.pprint(r) 

我正在尝试设计一个函数,一次性提取每个 ID 的查询结果并将其输出为列表。但是我是 python 的新手,我不确定如何去做。我从一个函数和一个 for 循环开始,像这样:

total = []

def get_info(dictionary_location):
  for key, value in dictionary_location.items():  
    global params
       params = {
       "lineId": value,
       "time": {"from": "2022-05-10", "to": "2022-05-19"}
       }
        q = gql(query)
        r = client.execute(q, variable_values = params)
return total.append(r)

但它不起作用。有人对 logic/syntax 有意见吗?

您的代码存在一些问题。主要的是因为你在循环中 returning total.append(r),所以只完成了循环的第一次迭代。对您的代码进行以下更改:

def get_info(dictionary_location):
    total = []
    for value in dictionary_location.values():  
        params = {
                  "lineId": value,
                  "time": {"from": "2022-05-10", "to": "2022-05-19"}
                  }
        q = gql(query)
        r = client.execute(q, variable_values = params)
        total.append(r)

    return total

这样您将:

  1. 实例化一个空列表total
  2. 遍历每个位置项,看起来您不需要 key 参数所以我删除了它
  3. query 的结果附加到 total 列表中
  4. 重复直到完成
  5. 一旦所有项目都被迭代,然后 return 包含 query
  6. 结果的列表