5 ответов:
он автоматически сортирует список кортежей по первым элементам в кортежах, затем по вторым элементам и т. д. кортеж([1,2,3]) будет идти перед кортежем([1,2,4]). Если вы хотите переопределить это поведение, передайте вызываемый в качестве второго аргумента методу сортировки. Этот вызываемый объект должен возвращать 1, -1, 0.
Да, это по умолчанию. Фактически, это основа классической идиомы" DSU " (Decorate-Sort-Undecorate) в Python. Смотрите код, как Pythonista.
нет, кортежи типы последовательности так же, как строки. Они сортируются одинаково, сравнивая каждый элемент по очереди:
>>> import random >>> sorted([(0,0,0,int(random.getrandbits(4))) for x in xrange(10)]) [(0, 0, 0, 0), (0, 0, 0, 4), (0, 0, 0, 5), (0, 0, 0, 7), (0, 0, 0, 8), (0, 0, 0, 9), (0, 0, 0, 12), (0, 0, 0, 12), (0, 0, 0, 12), (0, 0, 0, 14)]три нуля только там, чтобы показать, что что-то другое, чем первый элемент должен быть проверен.
попробуйте использовать метод сортировки внутреннего списка и передать лямбду. Если ваш кортеж первый элемент является целым числом, это должно работать.
# l is the list of tuples l.sort(lambda x,y: x-y)вы можете использовать любой вызываемый для функции сравнения, не обязательно лямбда. Однако он должен возвращать -1 (меньше), 0 (равно) или 1 (больше).
Проверьте "Devin Jeanpierre" ответ на этот вопрос sort-a-dictionary-in-python-by-the-value где он говорит, чтобы использовать кортеж и показывает, как Сортировать по второму значению
Comments