Python—;使用lambda排序(健全性检查)

Python—;使用lambda排序(健全性检查),python,Python,从有关将lambdas与sort方法一起使用的Python文档中: >>> pairs = [(1, 'one'), (2, 'two'), (3, 'three'), (4, 'four')] >>> pairs.sort(key=lambda pair: pair[1]) >>> pairs [(4, 'four'), (1, 'one'), (3, 'three'), (2, 'two')] 因此,寻找一个健全的检查,以确认我正确理

从有关将lambdas与
sort
方法一起使用的Python文档中:

>>> pairs = [(1, 'one'), (2, 'two'), (3, 'three'), (4, 'four')]
>>> pairs.sort(key=lambda pair: pair[1])
>>> pairs
[(4, 'four'), (1, 'one'), (3, 'three'), (2, 'two')] 
因此,寻找一个健全的检查,以确认我正确理解这一点: 本例中的lambda接受一对(在本例中是一个元组),并对元组的第二个元素(或第二个值;我不确定命名法)进行排序

由于第二个元素是字符串,因此排序将“字母顺序次”的值显示在顶部。因此,输出的元组在集合的顶部具有字母顺序较低的第二个元素


我的理解正确吗?

是的,精神正常。它根据每对中的第二个元素进行排序。

这是正确的

对列表中要排序的每个值调用
函数,排序顺序基于该调用的结果。字符串自然地按字典顺序排序(“按您所说的字母顺序”)和
列表。默认情况下,sort
按升序排序,因此您将以第二个元素的升序字典顺序获得所有元组的列表

请注意,这通常是通过使用
操作符.itemgetter
便利函数来实现的

from operator import itemgetter

my_list.sort(key=itemgetter(1))

是的,你是对的术语是字典顺序我投票结束这个问题作为离题,因为它是一个是/否的答案,并且已经提供了适当的答案。我喜欢你的答案,尽管你在这里使用的
更普遍
非常松散,我看到很多人在这样的情况下使用lambda,之所以要使用itemgetter,是因为每次迭代都会调用lambda,因此每次迭代都会定义一个新函数,而每次迭代都会变慢@Jaba
itemgetter
更快、更清晰、功能更强大,并被广泛使用。我不知道你的挑剔是什么意思?根据我的经验,
itemgetter
(出于所有这些原因)比一次性lambda更常用。你是对的,我想这更像是对我看到人们使用lambda执行此类任务的频率的吹毛求疵。不是在挑起一场战斗,我想这更像是对OP的评论。