首页 > 解决方案 > 在列表中搜索项目并将其替换为不同的值

问题描述

我正在尝试在 3D 列表中搜索一个项目,如果它在那里:替换它

winner =["Player", 100]
def leaderboardsave(winner):
    fileCSV = open('scores.csv')
    dataCSV = csv.reader(fileCSV)
    playersScores = list(dataCSV)
    winnerName = winner[0]
    if winnerName in playersScores:
        #replace item in playerScores with winner
    else:
        playersScores.append(winner)
        print(playersScores)
leaderboardsave(winner)

如果获胜者名称已经是 playerScores,我想用存储在获胜者中的分数替换他们的分数 我的 CSV 结构如下:

Owen, 20
George, 40
Lucas, 30
Jeremy, 60

标签: pythonlist

解决方案


您可以在您的if条件中使用它:

playersScores[playersScores.index(winnerName)] = winner

这里playersScores.index(winnerName)将返回列表中的winner索引playersScores。然后您可以使用该索引进行分配。

您可以将逻辑条件更新为:

try:
    winner_index = playersScores.index(winnerName) 
    playersScores[winner_index] = winner
except ValueError:  # Will raise this exception if "winnerName" 
                    # is not found in the list.
    playersScores.append(winner)

编辑:

在您上次编辑中,由于您提到playersScores的是元组列表,因此您需要将.index调用更新为:

playersScores = [['Player', ' 20'], ['Player2', ' 40'], ['Player3', ' 30'], ['Player4', ' 60'], ['Player', 100]]

player_name_list = zip(*playersScores)[0]  # list with all elements at index `0` 
winner_index = player_name_list.index(winnerName) 

推荐阅读