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
相关产品推荐
相关产品推荐

