无法在 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() 函数的其他建议。
  • 由于未提供 activePlayersoverallPoints,因此我在测试我的方法时使用了上面的假数据。
  • 我假设来自 activePlayers 的玩家将始终出现在 overallPoints 中的一个元组中。
  • 我假设玩家名称是唯一的。如果这不是真的,并且来自 activePlayer 的采样玩家与 activePlayer 中存在的另一个玩家同名,那么程序将仅 return 首次出现的索引overallPoints.
  • 中的玩家