Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Python tuples sorting based on last element [duplicate]

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

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
like image 515
Friend Avatar asked Feb 12 '13 09:02

Friend


1 Answers

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)]

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

like image 195
Volatility Avatar answered Nov 10 '22 11:11

Volatility