求助:如何对字典按值排序并输出键值对(高分榜场景)
按值排序字典并保留键值对的实现方法
你之前的代码只提取了字典的values(),所以排序后自然只有分数没有对应的名字。要保留键值对,得直接处理字典的键值对项,下面是两种可行的实现方式:
方法一:使用lambda表达式指定排序依据
直接用scores.items()获取所有键值对元组,通过lambda告诉sorted()以元组的第二个元素(也就是分数)作为排序关键字:
scores = { "Bob":21, "Ed":23, "Tony":45, "Mary":66 } # 按分数降序排序,保留键值对 sorted_scores = sorted(scores.items(), key=lambda item: item[1], reverse=True) print('The First 3 Highscores are:') # 遍历排序后的前3项,解构键和值 for name, score in sorted_scores[:3]: print(f"{name}: {score}")
方法二:使用operator模块的itemgetter(更高效)
如果字典数据量较大,推荐用operator.itemgetter来指定排序依据,性能比lambda更优:
import operator scores = { "Bob":21, "Ed":23, "Tony":45, "Mary":66 } sorted_scores = sorted(scores.items(), key=operator.itemgetter(1), reverse=True) print('The First 3 Highscores are:') for name, score in sorted_scores[:3]: print(f"{name}: {score}")
两种方法运行后都会输出:
The First 3 Highscores are:
Mary: 66
Tony: 45
Ed: 23
内容的提问来源于stack exchange,提问作者Graeme Cr
相关产品推荐
相关产品推荐

