Python 根据第一个元素对元组列表进行排序

Python 根据第一个元素对元组列表进行排序,python,sorting,tuples,Python,Sorting,Tuples,我必须根据第二个元素对元组列表进行排序。我正在使用函数sort()来执行此操作。然而,我所做的并没有起作用 def sort_tuple(to_sort): sort_tuple=((3, 'C'), (1, 'B'), (2, 'A')) sort_tuple.sort(key = lambda x: x[1]) return sort_tuple 如果我必须按照第一个元素对它进行排序,那么代码会是我在下面写的吗 def sor

我必须根据第二个元素对元组列表进行排序。我正在使用函数sort()来执行此操作。然而,我所做的并没有起作用

   def sort_tuple(to_sort):
        sort_tuple=((3, 'C'), (1, 'B'), (2, 'A'))
        sort_tuple.sort(key = lambda x: x[1])  
        return sort_tuple
如果我必须按照第一个元素对它进行排序,那么代码会是我在下面写的吗

   def sort_tuple(to_sort):
        sort_tuple=((3, 'C'), (1, 'B'), (2, 'A'))
        sort_tuple.sort
        return sort_tuple
谢谢大家!

def sort_tuple(to_sort):
   return tuple(sorted(to_sort, key = lambda x:x[1]))
sorted()
返回已排序的对象,而不是对其进行排序(变异),因此在这里它将转换为一个列表并对其进行排序


然后,当您想要一个元组时,我们使用
tuple()

将列表
sorted(to_sort,key=lambda x:x[1])
重新转换为一个元组。您犯了一个相当基本的错误:您想要将
排序为\u sort
,但您在函数中创建了一个新的元组,然后继续排序并返回它。另外,不要将临时返回值命名为与函数相同的名称,这会造成混淆并防止递归。最后一个问题是函数的前提:你不能对元组排序,它是不可变的,你可以创建一个新的元组,它是原始元组的排序版本;注释的格式不是换行符。为什么在函数中创建一个新的
元组
,而忽略参数?似乎您真的只想
进行_sort.sort(key=lambda x:x[1])
返回_sort
,或者避免对调用方的参数进行变异(这是个好主意,因为您无论如何都要返回排序后的值,在Python中,变异和返回变异后的值都是令人困惑和不快的,并且允许非
列表
输入),更简单的
返回sorted(to_sort,key=lambda x:x[1])
所以我应该写to_sort而不是sort tuple?但当我这么做的时候,我也没有得到任何回报……这是否回答了你的问题?现在工作,但似乎有悖常理有一个元组作为外部对象,它应该是一个列表,因为它是突变的初始问题是第二个元素,所以它是lambda x:x(1),但第一个元素将是lambda x:x(0),请考虑添加一些解释为您的代码完成,谢谢;这是我第一次回答有关堆栈溢出的问题