如何打印字典中的最高值



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

我选择了我们玩骰子游戏的任务,我有点拘泥于把字典按前5名排序。

我的代码读取leaderboards.txt并将其转换为词典。下面是Leaderboard.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个值?感谢

在python 3.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)]

最新更新