Python:如何实现打印字典中指定n个排名靠前的条目(含并列)?
解决方案
没问题,我来帮你调整代码实现这个需求。核心思路是先把相同分数的用户分组,再按分数从高到低排序,最后取前n个分组输出即可。
这里是完整的实现代码:
pN = {'dave': 10, 'jacinta': 10, 'james': 8, 'john': 6, 'jack': 3, 'sam': 2} n = 5 # 这里可以修改为你需要的任意排名数量 # 1. 按分数分组用户:键为分数,值为对应用户列表 score_groups = {} for user, score in pN.items(): if score not in score_groups: score_groups[score] = [] score_groups[score].append(user) # 2. 对分数进行降序排序,确保从高到低处理 sorted_scores = sorted(score_groups.keys(), reverse=True) # 3. 取前n个分数组,按要求格式输出 for score in sorted_scores[:n]: # 把同分数用户用逗号连接 user_list = ', '.join(score_groups[score]) print(f"{score} {user_list}")
代码解释
- 分组用户:通过遍历原始字典,将相同分数的用户归到同一个列表中,解决了同分数用户合并的问题。
- 排序分数:对分数进行降序排序,保证我们从最高分开始输出。
- 输出结果:截取排序后的前n个分数组,将每个组的用户用逗号拼接后打印,完全符合你要的格式。
测试输出(当n=5时)
10 dave, jacinta 8 james 6 john 3 jack 2 sam
如果需要调整显示的排名数量,只需要修改变量n的值即可,比如设置n=2就会输出前两个最高分的分组。
内容的提问来源于stack exchange,提问作者user9814201
相关产品推荐
相关产品推荐

