python - 在列表中搜索项目并将其替换为不同的值
问题描述
我正在尝试在 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
解决方案
您可以在您的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)
推荐阅读
- reactjs - VS Code 在智能感知中看不到 css 文件
- r - 根据数值变量的水平编码新因子
- c# - Microsoft Graph API query involving externalUserState C#
- regex - 无法为不同的 URL 创建正则表达式
- vb.net - 应用程序不会在调试模式下启动
- python - Odoo 10 - 带有 onChange() 装饰器的函数和新对象
- sql - 获取日期函数
- xamarin.forms - 带有 Xamarin 表单的 MobileFirst 7.1
- linux - “conda init”阻止 anaconda-navigator 在除基本环境之外的所有环境中工作
- android - 有没有办法在 ExoPlayer 中知道正在播放的 IMA 广告是前贴片广告、中贴片广告还是后贴片广告?