我有以下Python代码:
currentPlayers = query.getPlayers()
for player in currentPlayers:
return str(player['name'])+" "+str(player['score'])
我收到以下错误:
TypeError:list indices必须是整数,而不是str
我一直在寻找一个接近我的错误,但不知道怎么做,从来没有得到过这个错误。所以是的,我如何将其转换为整数而不是字符串?我想问题来自str(player['score'])
。
答案 0 :(得分:38)
您希望player
成为dict
而不是list
吗?
>>> player=[1,2,3]
>>> player["score"]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: list indices must be integers, not str
>>> player={'score':1, 'age': 2, "foo":3}
>>> player['score']
1
答案 1 :(得分:7)
player['score']
是你的问题。玩家显然是list
,这意味着没有'得分'元素。相反,你会做类似的事情:
name, score = player[0], player[1]
return name + ' ' + str(score)
当然,你必须知道列表索引(在我的例子中是0和1)。
python中允许使用player['score']
之类的内容,但player
必须是dict
。
您可以在python documentation中了解有关列表和词组的更多信息。
答案 2 :(得分:5)
players
是一个需要用整数索引的列表。你似乎像字典一样使用它。也许你可以使用拆包 - 像:
name, score = player
(如果player
列表始终为常量长度)。
在不知道query
是什么以及它是如何工作的情况下,我们可以提供更多建议。
值得指出的是,您发布的整个代码并没有多大意义。第二行有一个IndentationError
。此外,您的函数循环遍历某些可迭代,但在第一次迭代期间无条件地返回,这通常不是您实际想要做的。
答案 3 :(得分:1)
列表是一系列空格,可以用(0,1,2 ......等)索引。因此,如果玩家是一个列表,玩家[0]或玩家[1]将会有效。如果玩家是字典,玩家[“名字”]就可以了。