another way to sort like l.sort(key=lambda x:(x[0][0], -x[1][0]))

Peter Otten __peter__ at web.de
Tue Sep 7 10:32:12 EDT 2010


sajuptpm wrote:

> On Sep 7, 7:03 pm, Peter Otten <__pete... at web.de> wrote:
>> sajuptpm wrote:
>> > i need to implement  l.sort(key=lambda x:(x[0][0], -x[1][0])) in
>> > another way .I want to know what the modification needed in the 'if'
>> > check to sort this list of tuples in k[0][0] ascending and k[0][1]
>> > descending.
>>
>> It seems you are not getting any closer to your goal. Perhaps it would
>> help if you could explain that goal clearly rather than describing the
>> means you are employing to achieve it.
>>
>> > I have a list of tuples.
>>
>> > l = [((30,50),(70)), ((50,20),(20))]
>>
>> By the way, (42) is not a tuple, it's an integer. To turn it into a
>> 1-tuple you have to add a ',':
>>
>> >>> (42)
>> 42
>> >>> (42,)
>> (42,)
>> >>> 42,
>>
>> (42,)
>>
>> Peter
> 
> 
> I have a list of tuples.
> 
> l = [((30,50),(70,)), ((50,20),(20,))]
> 
> for i in range(10):
>         k = ((i+30,i+50),(i+70))#suppose creating new tuple in each
> iteration
> using some random value and in sert it into list.
> 
>         flag=True
>         for i, v in enumerate(l):
>         if v >= k:
>                 l.insert(i,k)
>                 flag = False
>                 break
>         if flag:
>         l.append(k)
> 
> This code will give a list of tuples sorted in asc order.
> I need to change this code to sort this list by k[0][0] ascending and
> k[0][1] descending.
> What are the modifications needed in this code.
> I dont want to user sort() method of list.
> 
> i need to implement  l.sort(key=lambda x:(x[0][0], -x[1][0])) in
> another way .I want to know what the modification needed in the 'if'
> check to sort this list of tuples in k[0][0] ascending and k[0][1]
> descending.

As a thought experiment assume that your audience had never heard of tuples 
or even Python. How would you then explain your goal?

Peter



More information about the Python-list mailing list