我是计算机科学专业的学生,对于我的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
如何在字典中打印前5个值?谢谢
答案 0 :(得分:2)
在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'}
答案 1 :(得分:0)
这是一个解决方案:
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)]
答案 2 :(得分:0)
为了对字典进行排序,您必须将其转换为可以排序的类型,例如列表。另外,除非您特别需要使用字典,否则我会将分数读入列表作为开始。对于您尝试做的事情,这是一种更合适的类型。