基于最后一个元素的 Python 元组排序

2022-01-20 00:00:00 python list dictionary tuples terminal

问题描述

这是我的问题,我有 tuple1=[(1, 3), (3, 2), (2, 1)] 我想根据每个元组的最后一位数字对元组进行排序,所以结果将如下所示输出=[(2, 1), (3, 2), (1, 3)]下面是我的代码

Here is my question i have tuple1=[(1, 3), (3, 2), (2, 1)] i want to sort tuple based on last digit of each tuple so the resultant will look like this output=[(2, 1), (3, 2), (1, 3)] below is my code

    i=0
for x in tuples:
    c.append(x[len(x)-1])
    last=sorted(c)
    for y in last.iteritems():
        if(y in x[len(x)-1]):
            print x             
            #b.insert(i,x)
i=i+1

运行 iam 后收到错误消息

after running iam getting an error message

    Traceback (most recent call last):
    File "x.py", line 47, in <module>
   sort_last([(1, 3), (3, 2), (2, 1)])
  File "x.py", line 35, in sort_last
 if(y in x[len(x)-1]):
  TypeError: argument of type 'int' is not iterable


解决方案

sorted 函数中指定 key 参数.

Specify the key argument in the sorted function.

>>> tuple1=[(1, 3), (3, 2), (2, 1)]
>>> output = sorted(tuple1, key=lambda x: x[-1])
>>> print output
[(2, 1), (3, 2), (1, 3)]

sorted 函数(以及 list.sort 方法)有一个可选的 key 参数,它指定对列表进行排序的对象.

The sorted function (as well as the list.sort method) has an optional key argument which specifies what to sort the list on.

相关文章