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

如何从Python字典生成降序排名列表?

最优实现方法

嘿,这个问题我之前也碰到过!其实排序后得到的元组列表正是解决问题的关键——它已经把名称和数值绑定在一起了,只是需要你把它们格式化输出就行。下面是简洁又高效的实现方式:

x = {"John":15,"Josh":2,"Emily":50,"Joey":12}

# 按数值降序排序字典的键值对
sorted_pairs = sorted(x.items(), key=lambda pair: pair[1], reverse=True)

# 格式化每个键值对并拼接成最终字符串
result = ' '.join([f"{name} - {score}" for name, score in sorted_pairs])

print(result)
# 输出: Emily - 50 John - 15 Joey - 12 Josh - 2

分步拆解:

  • x.items():返回字典的所有键值对,形式是[('John', 15), ('Josh', 2), ...]这样的元组列表,每个元组都包含你需要的名称和对应的数值。
  • sorted(..., key=lambda pair: pair[1], reverse=True):用sorted()函数完成排序,key参数指定按元组的第二个元素(也就是分数值)作为排序依据,reverse=True开启降序模式。
  • f"{name} - {score}":利用Python的f-string语法,把每个元组里的名称和数值快速格式化成你需要的字符串样式。
  • ' '.join(...):把所有格式化好的小字符串用空格连接起来,得到最终的排名字符串。

这个方法的时间复杂度主要由排序操作决定,是O(n log n),对于绝大多数场景都完全够用。如果需要重复使用这个逻辑,还可以封装成一个复用性更强的函数:

def generate_ranking(scores_dict):
    sorted_pairs = sorted(scores_dict.items(), key=lambda pair: pair[1], reverse=True)
    return ' '.join([f"{name} - {score}" for name, score in sorted_pairs])

# 调用示例
x = {"John":15,"Josh":2,"Emily":50,"Joey":12}
print(generate_ranking(x))

这样以后再遇到类似的需求,直接调用函数就搞定啦~

内容的提问来源于stack exchange,提问作者Arbys

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:08:11