Python中如何将标识符列表传入API参数?
解决同一API参数传入多个值的问题
你的代码存在几个明显问题:
- 列表定义语法错误:
query = [1, 2, 3, 4, 5)应修正为query = [1, 2, 3, 4, 5] - 参数传递方式错误:
("q", {value})写法无效,且value未定义,同时requests不支持这种多值参数的传递格式
在requests库中,给同一参数传递多个值有两种标准实现方式:
方式一:在参数元组列表中重复添加同一参数名
将每个q的取值单独作为("q", 值)的元组,加入到参数列表中:
import requests query = [1, 2, 3, 4, 5] headers = {"apikey": "apikey"} # 先定义固定参数,再遍历添加所有q的取值 params = [ ("gl", "US"), ("hl", "en") ] for val in query: params.append(("q", val)) response = requests.get('url', headers=headers, params=params) print(response.text)
方式二:使用字典传递,参数值设为列表
requests会自动将字典中列表类型的参数值,转换为同一参数名重复出现的格式:
import requests query = [1, 2, 3, 4, 5] headers = {"apikey": "apikey"} params = { "gl": "US", "hl": "en", "q": query # 直接传入列表类型的参数值 } response = requests.get('url', headers=headers, params=params) print(response.text)
两种方式最终都会生成格式为?gl=US&hl=en&q=1&q=2&q=3&q=4&q=5的请求URL,符合API接收多值参数的标准规范。
内容的提问来源于stack exchange,提问作者megha
相关产品推荐
相关产品推荐

