按平均值从最高到最低排序字典

时间:2015-06-18 08:49:32

标签: python

我正在创建一个游戏,我想打印出从最高到最低的平均用户分数 到目前为止,这是我的代码

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个生命),并以此为基础。我需要将用户名和最高平均分打印到最低。

1 个答案:

答案 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)的元组。我们有一个元组列表而不是字典,我们可以按分数(元组的第二个元素)按降序对它们进行排序。