Вы можете отсортировать, используя кортеж:
L = ['5', '3', '4', '1', '2', '2 3 5', '2 4 8', '5 22 1 37', '5 22 1 22', '5 22 1 23']
result = sorted(L, key=lambda x: (len(x.split()),) + tuple(map(int, x.split())))
print(result)
Вывод
['1', '2', '3', '4', '5', '2 3 5', '2 4 8', '5 22 1 22', '5 22 1 23', '5 22 1 37']
Идея состоит в том, чтобы использовать в качестве ключа кортеж, где первый элемент являетсяколичество чисел в строке, а остальное - кортеж чисел.Например, для '2 3 5'
ключом является (3, 2, 3, 5)
. Как предлагает @ PM2Ring, вы можете использовать функцию def
вместо lambda
:
def key(x):
numbers = tuple(map(int, x.split()))
return (len(numbers),) + numbers