Сортировка списка Python по нескольким параметрам

У меня есть список : list1 = ['black 2340 1743', 'black 3948 2011', 'black 396 1739', 'black 5080 463', 'black 5864 2059'] Мне необходимо отсортировать сначала по алфавитному порядку первый элемент(цвет), если он повторяется, отсортировать по 3 параметру в порядке возрастания, а если и он повторяется, то отсортировать по 2 парамету в порядке возрастания. Возможно ли это?


Ответы (2 шт):

Автор решения: Be3y4uu_K0T

Используйте функцию sorted с параметром key [1] и [2].

array = ['black 2340 1743', 'black 3948 2011', 'black 396 1739', 'black 5080 463', 'black 5864 2059']

def key(element):
    color, x, y = element.split()
    return (color, int(y), int(x))

print(sorted(array, key=key))
# ['black 5080 463', 'black 396 1739', 'black 2340 1743', 'black 3948 2011', 'black 5864 2059']
→ Ссылка
Автор решения: Soup

Разбейте каждую строку на список из 3x строк. Далее отсоритруйте стандартным методом sort() или фунцией sorted(). Python автоматически отсортирует всё как вам надо.

a = ['black 2340 1743', 'black 3948 2011', 'black 396 1739', 'black 5080 463', 'black 5864 2059']

#разделяем строки
for in range(0, len(a)): a[i] = a[i].split()

#сортируем
a.sort()

Если вам надо будет получить из массива строку под номером i, используйте:

' '.join(a[i])

P.s. Работать это будет потому, что одно число будет больше другого если оно больше в алфовитном порядке

→ Ссылка