我有以下Python代码:
currentPlayers = query.getPlayers()
for player in currentPlayers:
return str(player['name'])+" "+str(player['score'])
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
TypeError:list indices必须是整数,而不是str
我一直在寻找一个接近我的错误,但不知道怎么做,从来没有得到那个错误.所以是的,我如何将其转换为整数而不是字符串?我想问题来自于str(player['score']).
Spa*_*man 42
你期待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
Run Code Online (Sandbox Code Playgroud)
player['score']是你的问题.玩家显然是一个list意味着没有'得分'元素.相反,你会做类似的事情:
name, score = player[0], player[1]
return name + ' ' + str(score)
Run Code Online (Sandbox Code Playgroud)
当然,你必须知道列表索引(在我的例子中是0和1).
player['score']在python中允许类似的东西,但player必须是一个dict.
您可以在python文档中阅读有关列表和dicts的更多信息.
players是一个需要由整数索引的列表.你似乎像字典一样使用它.也许你可以使用拆包 - 像:
name, score = player
Run Code Online (Sandbox Code Playgroud)
(如果player列表总是一个恒定的长度).
在不知道query它是什么以及如何工作的情况下,我们可以给你更多的建议.
值得指出的是,您发布的整个代码并没有多大意义.IndentationError第二行有一个.此外,您的函数循环一些可迭代,但在第一次迭代期间无条件返回,这通常不是您实际想要做的.