You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 06:36:36