提取 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
这样您将:
- 实例化一个空列表
total
- 遍历每个位置项,看起来您不需要
key
参数所以我删除了它
- 将
query
的结果附加到 total
列表中
- 重复直到完成
- 一旦所有项目都被迭代,然后 return 包含
query
结果的列表
我需要一个 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
这样您将:
- 实例化一个空列表
total
- 遍历每个位置项,看起来您不需要
key
参数所以我删除了它 - 将
query
的结果附加到total
列表中 - 重复直到完成
- 一旦所有项目都被迭代,然后 return 包含
query
结果的列表