2015-11-19 3 views
0

У меня есть программа, которая генерирует 4 числа и добавляет их в список. Элементы каждого списка являются списками сами ищут что-то вроде:Распечатка списка в определенном порядке

[['+', 1, 1, 9, 9], ['+', 2, 1, 4, 4]] 
[['+', 2, 1, 10, 10], ['+', 3, 1, 5, 5]] 
[['+', 1, 1, 6, 6], ['+', 3, 1, 11, 11]] 
[['-', 1, 1, 9, 9], ['-', 2, 1, 4, 4]] 

Я пытаюсь напечатать их, так что последние цифры в убывающем порядке (если его же последняя цифра, то она использует третий номер в порядке убывания).

Мой код до сих пор:

for i in self.result: 
     sorted(self.result, key=itemgetter(4), reverse = True) 
     print("{}{:d} {:>5d}..{:>5d} {:>5d}\n" .format(i[0],i[1],i[2],i[3],i[4])) 

Проблема заключается в том, что, кажется, не печатать их упорядоченно на всех, так что я не знаю, где я неправильно.

+0

Вы, кажется, есть ** ** четыре списков на вершине? Это было ваше намерение? –

ответ

1

sorted() возвращает новый список, который вы не захватываете. Вы хотите либо slist = sorted(...), либо oldlist.sort(...). Последний случай сортируется.

Для сортировки, как вы хотите, используйте:

thelist.sort(key=lambda x:list(reversed(x))) 
+0

Спасибо! Это позволяет мне настроить одно правило для сортировки (для меня используется 4-я цифра). Как я могу добавить еще одно правило: если есть 2 с одинаковой 4-й цифрой, первая с третьей цифрой? – lamazibiji

+0

@lamazibiji: Он уже делает это. Он сортируется по всему внутреннему списку, но с изменением его позиций. –