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

Python使用sorted排序时如何直接获取排序所用lambda键值避免重复计算

Python排序保留计算键值的实现方案

Python原生支持该需求,无需引入第三方库,单行即可实现,核心思路是预打包键值与原元素后再排序,完全避免键函数的重复调用。

示例代码

print(sorted((temp(item[1]), item) for item in dict_a))

代码解释

  • 首先通过生成器表达式遍历原可迭代对象,把每个元素和提前计算好的排序键打包为(键值, 原元素)格式的元组,这一步每个元素仅会调用一次temp函数计算键值
  • 利用Python元组默认按索引顺序优先比较第一个元素的特性,直接对打包后的元组排序,无需额外指定key参数
  • 最终输出的结果就是你需要的[(1, ('c', 1)), (4, ('b', 2)), (9, ('a', 3))]格式,无需后续二次计算键值

适用场景

如果排序键的计算逻辑复杂度高、耗时久,该写法可以完全省掉排序后重新遍历计算键的开销,且生成器不会额外占用大量内存存储中间结果,也适用于处理大体积的可迭代对象。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 08:57:00