python: how to sort a complex list on two different keys

Viewed 11960

I have a weird list built in the following way:

[[name_d, 5], [name_e, 10], [name_a, 5]] 

and I want to sort it first by the number (desc) and then, if the number is the same, by the name (asc). So the result I would like to have is:

[[name_e, 10], [name_a, 5], [name_d, 5]]

I tried to think to a lambda function that I can use in the sort method, but I'm not sure I can do it.

5 Answers

Let's give your list a name - "arr"

arr.sort(key=lambda x:(x[0],-x[1]),reverse=True)

output - [[name_e,10],[name_d,5],[name_a,5]]

Related