Боюсь, вам нужно привести значения str
к int
для желаемого порядка сортировки. Затем вы просто хотите отсортировать список по нескольким атрибутам . Если вы хотите, чтобы str
значения тоже были в выводе, вам также нужно привести назад.
import operator
a = [['-10', '10'],
['-10', '20'],
['-15', '10'],
['-15', '20'],
['-5', '10'],
['-5', '20'],
['0', '10'],
['0', '20'],
['10', '10'],
['10', '20'],
['15', '10'],
['15', '20'],
['5', '10'],
['5', '20']]
print(a)
b = [[int(e[0]), int(e[1])] for e in a] # to int
b = sorted(b, key=operator.itemgetter(0, 1)) # sort
b = [[str(e[0]), str(e[1])] for e in b] # to str
print(b)
Вывод:
[['-10', '10'], ['-10', '20'], ['-15', '10'], ['-15', '20'], ['-5', '10'], ['-5', '20'], ['0', '10'], ['0', '20'], ['10', '10'], ['10', '20'], ['15', '10'], ['15', '20'], ['5', '10'], ['5', '20']]
[['-15', '10'], ['-15', '20'], ['-10', '10'], ['-10', '20'], ['-5', '10'], ['-5', '20'], ['0', '10'], ['0', '20'], ['5', '10'], ['5', '20'], ['10', '10'], ['10', '20'], ['15', '10'], ['15', '20']]
Надеюсь, это поможет!
РЕДАКТИРОВАТЬ: Или просто использовать некоторые lambda
выражение в sorted
:
c = sorted(a, key = lambda x: (int(x[0]), int(x[1])))
print(c)