我正在努力弄清楚如何完成以下概述的工作。
我正在使用有序词典来跟踪每个玩家(键)的分数(值)。 for
循环重复的次数与播放机的次数相同。
我的想法是更新与for循环中与x
相同索引的键的值,但我似乎无法弄清楚如何执行它。任何建议表示赞赏,我完全有可能以错误的方式处理此问题。
这是我到目前为止所拥有的:
numberOfPlayers = input("\nEnter number of players : ")
print("The number of players has been set to %s \n" %
(numberOfPlayers))
numberOfPlayersInt = int(numberOfPlayers)
players = collections.OrderedDict()
for index in range(numberOfPlayersInt):
teamName = input('Team/Player %i, enter a team name :' %(index))
players[teamName] = 0
for x in range(numberOfPlayersInt):
print("Player %d, your question :" % (x + 1))
answer = str(input("\nCorrect ? "))
if answer.lower() in ['y', 'yes']:
pass
#some code here that updates the value for this player.
包含3个条目的字典-a-c看起来像这样:
OrderedDict([('a', 0), ('b', 0), ('c', 0)])
最佳答案
您可以遍历当前词典,并使用它来构建具有新值的替换OrderedDict
。通过枚举原始OrderedDict
的项目,我们可以获得它们的索引,然后可以将这些vlaues传递给函数以确定它们的新值:
def new_value(index, key, value):
print("Player %d, your question :" % (index + 1))
answer = str(input("\nCorrect ? "))
if answer.lower() in ['y', 'yes']:
return value + 10
else:
return value
od = OrderedDict.fromkeys(['player1', 'player2', 'player3'], 0)
od = OrderedDict((k, new_value(i, k, v)) for i, (k, v) in enumerate(od.items()))
您可以使用类似的技术来修改现有字典中的值:
for i, (k, v) in enumerate(od.items()):
od[k] = new_value(i, k, v)
关于python - 如何在python中的有序字典中更改特定值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52932575/