无法在 Python 中编制索引
Unable to index in Python
我正在尝试从一个数组中找到另一个数组中的随机值:
team1Players = random.sample(activePlayers, 4)
print(team1Players[0])
index1 = overallPoints.index(f'{team1Players[0]}')
以上代码产生以下输出:
/Users/johnbeatty/PycharmProjects/THTTeamMakerv2/venv/bin/python /Users/johnbeatty/PycharmProjects/THTTeamMakerv2/main.py
playerName
Traceback (most recent call last):
File "/Users/johnbeatty/PycharmProjects/THTTeamMakerv2/main.py", line 237, in <module>
index1 = overallPoints.index(f'{team1Players[0]}')
ValueError: 'playerName' is not in list
Process finished with exit code 1
我不明白为什么这里会有问题; Python 清楚地识别了列表中的 playerName 和它的名字...有人能帮我吗?
因为overallPoints
数组没有值'playerName'。
您应该在 overallPoints
中添加值。
此行中的问题:overallPoints.index(f'{team1Players[0]}'
是您试图在 overallPoints
中搜索玩家名称,这是一个元组列表。您不会在那里单独找到任何玩家名称。你只会找到元组。
试试这个:
import random
activePlayers = ["Jack", "Ken", "Kyle", "Donald", "Amy"]
overallPoints = [("Jack", 10), ("Ken", 15), ("Kyle", 20), ("Donald", 30),
("Amy", 40)]
team1Players = random.sample(activePlayers, 4)
index1 = [i[0] for i in overallPoints].index(team1Players[0])
print(team1Players)
一些补充说明:
- 如果您担心所提议方法的速度或复杂性,请查看此相关 Whosebug post 以获得有关在解析元组列表时如何使用
.index()
函数的其他建议。
- 由于未提供
activePlayers
和 overallPoints
,因此我在测试我的方法时使用了上面的假数据。
- 我假设来自
activePlayers
的玩家将始终出现在 overallPoints
中的一个元组中。
- 我假设玩家名称是唯一的。如果这不是真的,并且来自
activePlayer
的采样玩家与 activePlayer
中存在的另一个玩家同名,那么程序将仅 return 首次出现的索引overallPoints
. 中的玩家
我正在尝试从一个数组中找到另一个数组中的随机值:
team1Players = random.sample(activePlayers, 4)
print(team1Players[0])
index1 = overallPoints.index(f'{team1Players[0]}')
以上代码产生以下输出:
/Users/johnbeatty/PycharmProjects/THTTeamMakerv2/venv/bin/python /Users/johnbeatty/PycharmProjects/THTTeamMakerv2/main.py
playerName
Traceback (most recent call last):
File "/Users/johnbeatty/PycharmProjects/THTTeamMakerv2/main.py", line 237, in <module>
index1 = overallPoints.index(f'{team1Players[0]}')
ValueError: 'playerName' is not in list
Process finished with exit code 1
我不明白为什么这里会有问题; Python 清楚地识别了列表中的 playerName 和它的名字...有人能帮我吗?
因为overallPoints
数组没有值'playerName'。
您应该在 overallPoints
中添加值。
此行中的问题:overallPoints.index(f'{team1Players[0]}'
是您试图在 overallPoints
中搜索玩家名称,这是一个元组列表。您不会在那里单独找到任何玩家名称。你只会找到元组。
试试这个:
import random
activePlayers = ["Jack", "Ken", "Kyle", "Donald", "Amy"]
overallPoints = [("Jack", 10), ("Ken", 15), ("Kyle", 20), ("Donald", 30),
("Amy", 40)]
team1Players = random.sample(activePlayers, 4)
index1 = [i[0] for i in overallPoints].index(team1Players[0])
print(team1Players)
一些补充说明:
- 如果您担心所提议方法的速度或复杂性,请查看此相关 Whosebug post 以获得有关在解析元组列表时如何使用
.index()
函数的其他建议。 - 由于未提供
activePlayers
和overallPoints
,因此我在测试我的方法时使用了上面的假数据。 - 我假设来自
activePlayers
的玩家将始终出现在overallPoints
中的一个元组中。 - 我假设玩家名称是唯一的。如果这不是真的,并且来自
activePlayer
的采样玩家与activePlayer
中存在的另一个玩家同名,那么程序将仅 return 首次出现的索引overallPoints
. 中的玩家