我正在创建一个游戏,我想打印出从最高到最低的平均用户分数 到目前为止,这是我的代码
player_scores = {}
for line in reversed(open("playerscores.txt").readlines()):
name, score = line.rstrip('\n').split(' / ')
score = int(score)
if name in player_scores and len(player_scores[name]) < 3:
player_scores[name].append(score)
if name not in user_scores:
player_scores[name] = list((score,))
playercores.txt中的名称存储如下:
George / 10
Obama / 10
我的代码获取用户的最后3个分数(最后3个生命),并以此为基础。我需要将用户名和最高平均分打印到最低。
答案 0 :(得分:0)
无法对字典进行排序。将分数添加到词典后,您需要再次将它们从词典中删除以对其进行排序。
尝试类似:
sorted([(k,sum(v)/len(v)) for k,v in player_scores.items()], key=lambda x: x[1], reverse=True)
[(k,sum(v)/len(v)) for k,v in player_scores.items()]
部分是一种理解,它遍历字典并产生(name, average score)
的元组。我们有一个元组列表而不是字典,我们可以按分数(元组的第二个元素)按降序对它们进行排序。