Как пройти список следующих условий - PullRequest
0 голосов
/ 04 июля 2011
a = [(2,3),(4,1),(2,8),(2,1),(3,4)]

Как просмотреть список следующих условий

  1. по первому кортежу от малого до большого заказа
  2. Если первый кортеж в соответствии с теми же двумя первыми в порядке убывания

Я могу отсортировать его, используя Python, отсортированный так:

sorted(a, key=lambda d: d[0], reverse=True)

а как сделать так (псевдокод):

if d[0] == d[0] then sort list by d[1] reverse

Ответы [ 2 ]

3 голосов
/ 04 июля 2011
sorted(..., key=lambda x: (x[0], -x[1]))
1 голос
/ 04 июля 2011

Ответ Игнасио хорошо работает для чисел, которые, кажется, нужны ОП.Если унарный - не может быть применен к полю, подлежащему изменению, вы можете использовать Reversinator

например.

class Reversinator(object):
    def __init__(self, obj):
        self.obj = obj
    def __lt__(self, other):
        return other.obj < self.obj

a = [(2,'3'),(4,'1'),(2,'8'),(2,'1'),(3,'4')]

print sorted(a, key=lambda x: (x[0], Reversinator(x[1])))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...