如何打印词典中的最大值

2024-04-20 11:45:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我是一名计算机科学专业的学生,我的GCSE课程需要完成NEA课程。你知道吗

我选择了一个骰子游戏的任务,我被困在一个有点,我排序到前5名的分数字典。你知道吗

我的密码是排行榜.txt把它转换成字典。下面是排行榜.txt你知道吗

12 p2
13 p1
1412 p5
34 p3
213 p6
9 p4

现在我找不到任何地方可以告诉我如何按最大值对字典进行排序。下面是我的代码

highscores={}
with open("Leaderboard.txt") as f:
    for line in f:
        (key,val) = line.split(" ")
        highscores[int(key)] = val

如何打印dict中的前5个值?谢谢


Tags: keytxt字典专业排序lineval骰子
3条回答

为了对字典进行排序,您必须将它转换为可以排序的类型,例如列表。或者,除非你特别需要使用字典,否则我会先把分数读入一个列表。这是一个更适合你尝试做的类型。你知道吗

在Python3.6中,字典是按插入顺序排序的,因此您需要提取所有键和值,对它们重新排序,然后将它们粘贴到一个新的字典中(在使用时限制为5个条目)

original_dict = {
    12: 'p2',
    13: 'p1',
    1412: 'p5',
    34: 'p3',
    213: 'p6',
    9: 'p4'
}

sorted_items = sorted(original_dict.items(), key=lambda x: -x[0])

print({k: v for k, v in sorted_items[:5]})
{1412: 'p5', 213: 'p6', 34: 'p3', 13: 'p1', 12: 'p2'}

这里有一个解决方案:

from collections import Counter  

dct = {'p2':12,'p1':13,'p5':1412,'p3':34,'p6':213,'p4':9}
print(Counter(dct).most_common(5))

输出:

[('p5', 1412), ('p6', 213), ('p3', 34), ('p1', 13), ('p2', 12)]

相关问题 更多 >