如何获取Python字典enemyType中的HP与DMG值?
解决方法
你的enemyType字典中,每个怪物类型对应的value是包含单个属性字典的列表,要获取HP和DMG的数值,得先取出列表里的字典,再通过键访问对应值。以下是两种可行写法:
方式一:直接取列表中的唯一字典(适配当前结构)
import random enemyType = {"skeleton": [{"HP": random.randint(12,15), "DMG": random.randint(3,7)}], "zombie": [{"HP": random.randint(21,33), "DMG": random.randint(5,9)}], "golem": [{"HP": random.randint(40,55), "DMG": random.randint(6,13)}]} for enemy_name, enemy_list in enemyType.items(): # 取出列表里的属性字典 enemy_stats = enemy_list[0] print(f"{enemy_name}: HP={enemy_stats['HP']}, DMG={enemy_stats['DMG']}")
运行后输出示例:
skeleton: HP=14, DMG=3 zombie: HP=28, DMG=8 golem: HP=45, DMG=8
方式二:遍历列表中的所有字典(适配后续同类型多敌人场景)
如果之后需要给同类型怪物添加多个属性条目,用这种写法更灵活:
import random enemyType = {"skeleton": [{"HP": random.randint(12,15), "DMG": random.randint(3,7)}], "zombie": [{"HP": random.randint(21,33), "DMG": random.randint(5,9)}], "golem": [{"HP": random.randint(40,55), "DMG": random.randint(6,13)}]} for enemy_name, enemy_list in enemyType.items(): print(f"--- {enemy_name} ---") for stats in enemy_list: print(f"HP={stats['HP']}, DMG={stats['DMG']}")
原代码问题说明
你原来的内层循环for k, v in value:逻辑错误:value是列表,直接遍历会取出里面的字典;而对字典执行for k, v in dict时,默认迭代的是字典的键,且单个键无法拆分为k, v两个变量(实际运行本应报错)。你看到仅打印HP是字典键迭代顺序导致的偶然结果,并非正确逻辑。
内容的提问来源于stack exchange,提问作者user14409582
相关产品推荐
相关产品推荐

