Python嵌套字典随机取值报错KeyError: 'colors',求助解决
问题分析与解决
你遇到的KeyError: 'colors'是因为外层字典breeds的键是猫咪品种名('bengal'、'tabbycat'),并没有'colors'这个键。你需要先通过选中的品种,找到对应的子字典,再从中获取颜色、长度这些信息。
修正后的代码
import random breeds = { 'bengal': { 'colors' : ['red', 'black', 'grey'], 'length': ['short', 'medium', 'long'], 'pattern': ['spotted', 'marbled'] }, 'tabbycat': { 'colors' : ['grey', 'blue', 'silver'], 'length' : ['short', 'medium', 'long'], 'pattern' : ['mackeral', 'classic'] } } # 随机选一个品种 breed = random.choice(list(breeds)) # 通过品种名获取该品种的详细信息字典 breed_info = breeds[breed] # 从详细信息里随机选颜色、长度、花纹 color = random.choice(breed_info['colors']) fur_length = random.choice(breed_info['length']) pattern = random.choice(breed_info['pattern']) print(f"品种:{breed.title()}") print(f"颜色:{color.title()}") print(f"被毛长度:{fur_length.title()}") print(f"花纹:{pattern.title()}")
关键改动说明
- 新增
breed_info = breeds[breed]:用选中的品种名作为键,从外层字典取出对应的子字典,这个子字典里才包含'colors'、'length'、'pattern'这些键。 - 后续获取颜色等信息时,从
breed_info里取,而不是直接从外层的breeds字典取。
内容的提问来源于stack exchange,提问作者IHateTheLearningProcess
相关产品推荐
相关产品推荐

