首页 > 解决方案 > 排序前 10 个列表 Python

问题描述

嗨,我一直在试图弄清楚如何以相反的顺序对列表进行排序,并且列表中只有 10 个项目。我是一个非常初学者,仍在试图弄清楚列表是如何工作的。感谢您的帮助。

scoring = {"Name": "", "WinStreak": 0}
leaderboard = []
count = 0

with open("testing2.txt", "r") as fileText:
    for line in fileText:
        name = line.split()[0]
        winning = int(line.split()[2])
        leaderboard.append({"Name": name, "WinStreak": winning})

for display in leaderboard:
    print(display["Name"], "-", display["WinStreak"])

测试2.txt

Cruz , 2
Cherryl , 3
Kim , 6
WyeKeong , 7
Johnny , 3
Chris , 6
Javier , 5
Alham , 7
XuanWei , 1
KiahYen , 3
YuZheng , 5

实际输出

Cruz - 2
Cherryl - 3
Kim - 6
WyeKeong - 7
Johnny - 3
Chris - 6
Javier - 5
Alham - 7
XuanWei - 1
KiahYen - 3
YuZheng - 5

预期产出

WyeKeong - 7
Alham - 7
Chris - 6
Kim - 6
Javier - 5
YuZheng - 5
Johnny - 3
Cherryl - 3
KiahYen - 3
Cruz - 2

标签: pythonlist

解决方案


您正在寻找根据值对字典进行排序。为此,您可以简单地使用 -

leaderboard = sorted(leaderboard, key=lambda itm: itm["WinStreak"], reverse = True)

以下是上述功能的工作原理 -

  • sorted()可以采用第二个参数,这是对给定数据结构进行排序的关键。
  • 在 key 参数中,我们传递了一个lambda 函数,该函数将返回排行榜中每个键值对的 value(itm["WinStreak"])。
  • reverse=True将按降序对它进行排序(默认情况下它是升序的)。

因此,此语句将leaderboard根据它们所持有的值按降序对它们进行排序。使用此语句后,您可以像以前一样简单地打印 -

for display in leaderboard:
    print(display["Name"], "-", display["WinStreak"])

这将为您提供所需的输出。希望这有帮助!


推荐阅读