python - 排序前 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
解决方案
您正在寻找根据值对字典进行排序。为此,您可以简单地使用 -
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"])
这将为您提供所需的输出。希望这有帮助!
推荐阅读
- io - 当我们可以在 8086 处理器中使用就绪引脚时,为什么还需要一个保持引脚?
- google-cloud-platform - 将访问控制应用于 BigQuery 或 Bigtable 等 GCP 服务时,不同级别的访问控制如何相互冲突?
- angular - 更新指令中的属性值
- javascript - 在矩形内绘制对角线
- spring-boot - 在 Spring Boot 中发送带有多个附件的电子邮件
- c# - 在 Form.OnPaint 中设置“System.Drawing.Graphics.Transform”会产生 ArgumentException
- javascript - 在下拉列表中选择一个选项时,如何使用 onChange 更改状态但使用选项标签内的值以外的值
- python-3.x - 按日期分组扩展总和
- c - Nginx 模块:如何从过滤器重定向?
- java - 如何使用休眠中的条件转换mysql连接查询