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

Python中sort函数使用lambda作为key的排序结果疑问

问题解答

首先明确代码里的排序逻辑:sort方法的key参数指定的是字符串中不同字符的数量,不是总字符数,也不是字母顺序。我们逐个计算每个字符串对应的key值:

  • 'aaaa':转成集合后是{'a'},不同字符数量为1
  • 'foo':转成集合后是{'f','o'},不同字符数量为2
  • 'abab':转成集合后是{'a','b'},不同字符数量为2
  • 'bar':转成集合后是{'b','a','r'},不同字符数量为3
  • 'card':转成集合后是{'c','a','r','d'},不同字符数量为4

排序时会先按这个key值从小到大排列:

  1. key=1的'aaaa'排第一
  2. 接着是key=2的两个元素,Python的排序是稳定排序,当key值相同时,会保留它们在原列表中的相对顺序——原列表里'foo'在'abab'前面,所以排序后这两个的顺序是'foo'在前,'abab'在后
  3. 然后是key=3的'bar',最后是key=4的'card'

这就是最终输出['aaaa', 'foo', 'abab', 'bar', 'card']的原因,教材里的“单词字母数量”表述不准确,实际是不同字符的数量。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 01:50:59