尝试按索引访问列表时出现Python错误-“;列表索引必须是整数,而不是str";

尝试按索引访问列表时出现Python错误-“;列表索引必须是整数,而不是str";,python,Python,我有以下Python代码: currentPlayers = query.getPlayers() for player in currentPlayers: return str(player['name'])+" "+str(player['score']) 我得到了以下错误: TypeError:列表索引必须是整数,而不是str 我一直在寻找一个接近我的错误,但不知道如何做,从来没有得到那个错误。是的,我怎样才能把它转换成整数而不是字符串呢?我猜问题来自于str(

我有以下Python代码:

currentPlayers = query.getPlayers()
    for player in currentPlayers:
        return str(player['name'])+" "+str(player['score'])
我得到了以下错误:

TypeError:列表索引必须是整数,而不是str


我一直在寻找一个接近我的错误,但不知道如何做,从来没有得到那个错误。是的,我怎样才能把它转换成整数而不是字符串呢?我猜问题来自于
str(player['score'])

players
是一个需要用整数索引的列表。你好像把它当作字典一样使用。也许你可以使用解包,比如:

name, score = player
name, score = player[0], player[1]
return name + ' ' + str(score)
(如果
player
列表始终为固定长度)

在不知道什么是
query
以及它是如何工作的情况下,我们无法提供更多的建议


值得指出的是,您发布的整个代码没有太多意义。第二行有一个缩进错误。此外,您的函数在某些可迭代上循环,但在第一次迭代期间无条件返回,这通常不是您真正想要做的。

您是否希望
播放器
成为
dict
而不是
列表

>>> 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
>player=[1,2,3]
>>>球员[“得分”]
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
TypeError:列表索引必须是整数,而不是str
>>>玩家={'score':1,'age':2,'foo':3}
>>>玩家['score']
1.

玩家['score']
是你的问题。玩家显然是一个
列表
,这意味着没有“得分”元素。相反,您将执行以下操作:

name, score = player
name, score = player[0], player[1]
return name + ' ' + str(score)
当然,您必须知道列表索引(在我的示例中是0和1)

python中允许类似于
player['score']
的东西,但是
player
必须是
dict


您可以在中阅读有关列表和dict的更多信息。

列表是一个可以按(0、1、2…等)索引的空格链。因此,如果玩家是一个列表,那么玩家[0]或玩家[1]就可以工作了。如果players是一本字典,那么players[“name”]就可以工作了