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

Python随机动漫选择器出现KeyError:4错误,求排查修正

解决Python随机动漫选择器的KeyError:4问题

问题重现

开发随机动漫选择器时,定义了按分类存储动漫的字典Myanimes,执行print(choice(Myanimes))时抛出KeyError:4错误。代码如下:

from random import choice
#create a list of animes and insert their genres

Myanimes= {

   "Action":["One Punch Man","Demon Slayer","Vinland Saga","Baki","Baki Hanma","Full Metal alchemist:brotherhood","Yasuke","Dragon Ball Z","Dragon Ball Super"],
   
   "Adventure":["My hero academia "," Black Clover","Naruto","Cowboy Bebop"],
   
   "Supernatural":["Blue exorcist","Jojo's Bizarre Adventure"],
   
   "Sci-fi":["Attack on Titan","Assasination Classroom","Parasyte"],
   
   "Fantasy":["Jujustsu Kaisen","Hunter x Hunter","Devilman Crybaby"],
   
   "Comedy":["Komi Can't Communicate"],
   
   "Drama":["Food Wars","The Disastrous Life of Saiki K"],
   
   "Psychological":["Code Geass","Mob Pyscho","Death Note"],
   
   "Horror":["Castlevania","Record of Ragnarok"],
}
print(choice(Myanimes))

报错信息:

KeyError: 4

错误原因

  • random.choice()的参数必须是序列类型(如列表、元组,支持通过整数索引访问元素)
  • 直接传入字典时,函数会生成随机整数索引(如4),并尝试用Myanimes[4]取值,但字典的键均为字符串类型,不存在整数键4,因此触发KeyError

解决方案

根据需求选择对应实现:

1. 随机选择一个动漫分类

将字典的键转换为列表后传入choice():

print(choice(list(Myanimes)))

2. 随机选择一部动漫

先随机选中一个分类,再从该分类的动漫列表中随机选作品:

# 随机选分类
random_genre = choice(list(Myanimes))
# 从分类中随机选动漫
random_anime = choice(Myanimes[random_genre])
print(f"随机推荐:{random_anime}(分类:{random_genre})")

修正后的完整代码示例

from random import choice

Myanimes= {
   "Action":["One Punch Man","Demon Slayer","Vinland Saga","Baki","Baki Hanma","Full Metal alchemist:brotherhood","Yasuke","Dragon Ball Z","Dragon Ball Super"],
   "Adventure":["My hero academia "," Black Clover","Naruto","Cowboy Bebop"],
   "Supernatural":["Blue exorcist","Jojo's Bizarre Adventure"],
   "Sci-fi":["Attack on Titan","Assasination Classroom","Parasyte"],
   "Fantasy":["Jujustsu Kaisen","Hunter x Hunter","Devilman Crybaby"],
   "Comedy":["Komi Can't Communicate"],
   "Drama":["Food Wars","The Disastrous Life of Saiki K"],
   "Psychological":["Code Geass","Mob Pyscho","Death Note"],
   "Horror":["Castlevania","Record of Ragnarok"],
}

# 随机选一部动漫并输出
random_genre = choice(list(Myanimes))
random_anime = choice(Myanimes[random_genre])
print(f"随机推荐动漫:{random_anime}(分类:{random_genre})")

内容的提问来源于stack exchange,提问作者Mark Nganga

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 04:30:30