You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用range遍历JokeAPI返回字典遇异常,求正确遍历方法

问题根源与解决方法

问题原因

  1. 笑话结构不统一:JokeAPI返回的笑话分两种类型——双段笑话(含setup和delivery字段)和单段笑话(仅joke字段),你强行读取setup和delivery,遇到单段笑话就会触发KeyError。
  2. 固定遍历次数不合理:用range(4)硬编码遍历次数,既可能没处理完所有返回的笑话,也可能在API返回数量不足时触发索引越界。

正确遍历代码

直接遍历返回的笑话列表,根据笑话类型输出对应内容:

import requests
import json

response = requests.get('https://v2.jokeapi.dev/joke/Any?safe-mode&amount=5')
json_string = response.content
parsed_json = json.loads(json_string) 

# 遍历所有返回的笑话条目
for joke in parsed_json['jokes']:
    if 'setup' in joke:
        # 处理双段笑话
        print("your jokes sir: ", joke['setup'], joke['delivery'])
    else:
        # 处理单段笑话
        print("your jokes sir: ", joke['joke'])

可选优化

  • 若只想获取双段笑话,可修改API请求参数,指定笑话类型:
    response = requests.get('https://v2.jokeapi.dev/joke/Any?safe-mode&amount=5&type=twopart')
    
    这样返回的所有笑话都包含setup和delivery,无需再判断字段。
  • 增加请求成功校验,避免请求失败时后续代码报错:
    if response.status_code == 200:
        # 原有解析和遍历代码
    else:
        print("请求失败,状态码:", response.status_code)
    

内容的提问来源于stack exchange,提问作者Adam K

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 15:05:30