key lambda的第二个参数在python中的sort函数中意味着什么

Cha*_*ang -1 python sorting lambda

d根据每个单词的长度按照后代顺序排序,我们在python中有这些实现:

d = ["ba","ab","a","b"]

d.sort(key = lambda s: (-len(s), s)) # ['ab', 'ba', 'a', 'b']

d.sort(key = lambda s: -len(s)) # ['ba', 'ab', 'a', 'b']

d.sort(key = lambda s: len(s), reverse = True) # ['ba', 'ab', 'a', 'b']
Run Code Online (Sandbox Code Playgroud)

这是我的问题:

  1. 为什么第一个结果与其他两个结果不同?
  2. s在第一种lambda函数中,第二个参数是什么意思?

Mos*_*oye 5

在第一种情况下,排序优先级基于2元组中的元素,元组中的第一个元素具有更高的优先级.

您的玩具代码中的第二个元素充当了平局,就像长度为abba的值为2的情况一样.对于容器中的任何两个项目,仅在第一个排序标准导致第二个元素时进行比较一个领带.

此外,如果关系存在或未被破坏(使用第二个元素或通常与其他两个示例一样),则按原始顺序对项目进行优先级排序; 蒂姆索特很稳定.

另外值得注意的是,2元组排序对第一个元组项进行数字排序,对第二元组进行字典排序.