如何从InlineResponse200对象取随机值?调用giphy_client报TypeError
错误原因
random.choice() 入参必须是可计算长度、支持索引访问的序列类型(比如列表、元组),你直接传入的api_response是Giphy SDK封装的InlineResponse200响应对象,不是接口返回的GIF结果列表,这个对象没有实现长度计算的相关方法,所以触发报错。
修复方案
Giphy搜索接口返回的GIF结果列表,存放在响应对象的data属性下,你只需要对这个属性做随机选择即可,修正后的代码:
import giphy_client import random from pprint import pprint api_instance = giphy_client.DefaultApi() api_key = "aqMkX2XKd7aCTM4pVRB7XXXXXX9ieep" q = "banana" api_response = api_instance.gifs_search_get(api_key, q) # 从响应的data字段(GIF结果列表)中随机选取单条内容 random_selected_gif = random.choice(api_response.data) pprint(random_selected_gif)
通用排查技巧
- 遇到类型不匹配报错时,优先用
type(目标变量)确认变量实际类型,再用print(目标变量)或pprint(目标变量)打印对象内容,就能快速找到实际存储数据的字段 - 第三方SDK返回的响应通常都是封装后的实体对象,不会直接返回裸数据列表,不要默认响应当即就是你要的数据集
内容的提问来源于stack exchange,提问作者Simon Vlach
相关产品推荐
相关产品推荐

