Я новичок в Python, как свидетельствует имя экрана. Я пытался сортировать список кортежей, думаю (x, y) пар в списке и столкнулся с проблемой. Моя цель состоит в том, чтобы отсортировать список кортежей по й переменным в порядке возрастания в первую очередь, но потом вродеСложность Сортировка кортежей с itemgetter
Я исследовал вика на HowToSort в http://wiki.python.org/moin/HowTo/Sorting/ и думал, что я хотел бы попробовать оператор модуль и itemgetter функции в виде ключ.
Простая функция sorted() может сортировать кортеж в порядке, но если вы хотите, чтобы один индекс возрастал и один по возрастанию, я теряюсь. Вот код:
from operator import itemgetter, attrgetter
ItemList = [(1,7),(2,1),(1,5),(1,1)]
# Want list sorted with X values descending, then y values ascending
# expected [(2, 1), (1, 1), (1,5), (1, 7)]
print
print ' Input:', ItemList
print 'Output1:',sorted(ItemList, reverse = True)
print
print ' Input:', ItemList
print 'Output2:', sorted(ItemList, key = itemgetter(-0,1))
print
print ' WANTED:', '[(2, 1), (1, 1), (1,5), (1, 7)]'
со следующим выходом:
Input: [(1, 7), (2, 1), (1, 5), (1, 1)]
Output1: [(2, 1), (1, 7), (1, 5), (1, 1)]
Input: [(1, 7), (2, 1), (1, 5), (1, 1)]
Output2: [(1, 1), (1, 5), (1, 7), (2, 1)]
WANTED: [(2, 1), (1, 1), (1, 5), (1, 7)]
я, очевидно, не понимают функцию itemgetter, так что любая помощь будет оценена по этому вопросу.
Кроме того, любые идеи о том, как сделать два вида по (x, y) парам? Я надеюсь избежать лямбда-решения, но я уверен, что это происходит. Благодарю.
Как '[(2, 1), (1, 1), (2, 1), (1, 7)]' сортируется с 'x'-значениями по убыванию? – arshajii
Ваш выход WANTED не имеет смысла. Я думаю, вы ошибались и означали «[(2, 1), (1, 1), (1, 5), (1, 7)]» вместо этого. –
Да, спасибо. Я только что исправил это. –