Python For循环创建两个相同的字典,而不是两个唯一的字典

Python For循环创建两个相同的字典,而不是两个唯一的字典,python,python-3.x,discord.py,Python,Python 3.x,Discord.py,我正在使用Discord.py创建一个Discord机器人。我希望它是一种不和谐中的RPG,在那里你可以在不和谐中与怪物战斗、升级和执行任务。问题在于生成用户必须与之战斗的敌人列表的代码。现在,它应该创造两个相同类型的敌人,拥有不同的属性 代码如下所示: startBattle方法。创建敌人并将其添加到用户的“fightingNow”列表中 def startBattleid、房间、区域: 阻止玩家在战斗中前进 playerData[id]['canProgress']=False 选择要创建的

我正在使用Discord.py创建一个Discord机器人。我希望它是一种不和谐中的RPG,在那里你可以在不和谐中与怪物战斗、升级和执行任务。问题在于生成用户必须与之战斗的敌人列表的代码。现在,它应该创造两个相同类型的敌人,拥有不同的属性

代码如下所示:

startBattle方法。创建敌人并将其添加到用户的“fightingNow”列表中 def startBattleid、房间、区域: 阻止玩家在战斗中前进 playerData[id]['canProgress']=False 选择要创建的敌人数量。出于测试原因,将其设置为2 金额=随机。随机数2,2 对于范围为0的enemyID,金额: 创建一个修改器应用于敌人的属性 randomMod=random.randint-3,3 修改器=1+房间+随机模式/10 从.json文件中选择敌人。由于测试原因,设置为仅选择一个敌人 敌人=随机。随机1,1 敌人=敌人数据[力量] 将修改器应用于相关统计信息 敌人['maxHP']=intmodifier*敌人['maxHP'] 敌人['baseHP']=敌人['maxHP'] 敌人['baseEnd']=intmodifier*敌人['baseEnd'] 敌人['baseAttack']=intmodifier*敌人['baseAttack'] 敌人['baseAgi']=intmodifier*敌人['baseAgi'] 敌人['basePre']=intmodifier*敌人['basePre'] 敌人['baseLvl']=intmodifier*敌人['baseLvl'] 设置敌人id,在战斗系统中用于确定玩家的攻击对象 敌人['id']=敌人id 最终版本中的打印内容将被删除。 印刷敌人 将创建的敌人附加到用户正在与之战斗的敌人列表中 playerData[id]['fightingNow'].追加敌人 将数据保存到一些.json文件中 _拯救 它应该是这样工作的:
敌人1和敌人2都是骷髅。敌人1的最大生命值为10,而敌人2的最大生命值为12。因此,这两项都应该添加到用户的“fightingNow”列表中。相反,该列表包含两个最大HP为12的骨架。生成敌人1,但被敌人2的克隆覆盖。感谢您提供的任何帮助。

字典是可变对象,因此当您附加敌人时,实际上是在附加对敌人的引用,而不是敌人的副本。幸运的是,这是一个相当简单的修复方法-只需添加。复制:

playerData[id]['fightingNow'].append(enemy.copy())