按从高到低的平均值对字典进行排序

2024-09-28 04:23:11 发布

您现在位置: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,))

姓名playerscores.txt存储方式如下:

^{pr2}$

我的代码从用户那里获取最后3个分数(最后3个生命),并以此为基础。我需要打印的用户名连同最高的平均分数最低。在


Tags: 代码用户nameintxt游戏forif
1条回答
网友
1楼 · 发布于 2024-09-28 04:23:11

词典无法排序。一旦你把分数加到字典里,你就需要再把它们从字典里拿出来分类。在

尝试类似于:

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

相关问题 更多 >

    热门问题