python将字典附加到列表会导致keyError

2024-05-13 06:50:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试制作一个列表,在其中添加字典。 我已经做过很多次了,但似乎不知道为什么会发生这种情况。它应该将字典添加到列表中并继续执行代码,但返回错误KeyError: '"id"'

这是我的代码
raid_damage.append("""{"id":{}, "damage":{}, "taken":{}, "streak":{}}""".format(str(user), str(damage_dealt), str(damage_taken), "1"))

我尝试过使用“代替”(同时删除三重引号)和eval(),但仍然存在完全相同的错误

有什么想法吗


Tags: 代码idformat列表字典错误情况taken
2条回答

欢迎光临!这是一个不带“”的解决方案

raid\u damage.append({“id”:user,“damage”:造成的伤害,“take”:造成的伤害,“streak”:streak})

由于字符串中有花括号,当使用format()时会出现错误,因为{}是输入参数中给定值的特殊字符,解决方法是将它们加倍

raid_damage.append("""{{"id":{}, "damage":{}, "taken":{}, "streak":{}}}""".format(str(user), str(damage_dealt), str(damage_taken), "1"))
print(raid_damage[0]) # {"id":a, "damage":b, "taken":c, "streak":1}

但是小心点,您没有添加dict而只是一个dict的string表示,putinh一个dict会是这样的

raid_damage.append({"id":user, "damage":damage_dealt, "taken":damage_taken, "streak":"1"})
print(raid_damage[0]) # {'id': 'a', 'damage': 'b', 'taken': 'c', 'streak': '1'}

相关问题 更多 >