【问题标题】:How do I print the top values in my dictionary如何打印字典中的最高值
【发布时间】:2019-11-15 10:18:38
【问题描述】:

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

【问题讨论】:

标签: python dictionary python-3.6


【解决方案1】:

在 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'}

【讨论】:

  • 好答案,我只想为用户数据添加,他们从文件中读取数据,因此他们将拥有字符串数据,因此他们需要将 x[0] 包装为 int(x[0]) 以确保排序分数。
  • @ChrisDoyle - 这是真的,尽管操作人员已经在他们的问题中这样做了
  • 谢谢它的工作,你知道我如何打印它以便在打印时它的格式更好吗?
  • @ICookixz - 您需要遍历输出字典中的项目,然后按您喜欢的方式格式化它们
  • @Sayse 好吧,似乎有人在 dict 键上编辑了将 int() 更改为 str() 的 OP 问题。我已经更新了 OP 问题,再次像原来那样使用 int()。
【解决方案2】:

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

【讨论】:

    【解决方案3】:

    这里有一个解决方案:

    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)]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-04-02
      • 1970-01-01
      • 1970-01-01
      • 2022-11-13
      • 1970-01-01
      • 1970-01-01
      • 2019-04-18
      • 1970-01-01
      相关资源
      最近更新 更多