如何在字典中打印最高值

时间:2019-11-15 10:18:38

标签: python dictionary python-3.6

我是计算机科学专业的学生,​​对于我的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个值?谢谢

3 个答案:

答案 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)

为了对字典进行排序,您必须将其转换为可以排序的类型,例如列表。另外,除非您特别需要使用字典,否则我会将分数读入列表作为开始。对于您尝试做的事情,这是一种更合适的类型。