Подскажите как правильно отсортировать список

y = int(input())
c = list()

for i in range(x):
    v = str(i)[0]
    b = len(str(i))
    if v * b == str(i):
        c.append(i)

Код должен принимать 2 значения, первое - количество комнат, второе - комната на которой был ответ ( число 100% будет скучным, то есть 1;2;11;22;22222;99999 ) с созданием и отделением скучных чисел код справляется, но похожие скучные числа должны стоять рядом в том плане, что 1;11;111 должны стоять вместе. мой же вывод из кода при вводных значениях (100;22)

[1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 22, 33, 44, 55, 66, 77, 88, 99]

в идеале список должен выглядеть вот так

[1, 11, 2, 22, 3, 33, 4, 44, 5, 55, 6, 66, 7, 77, 8, 88, 9, 99]


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

Автор решения: чистов_n

Просто с использованием параметра key:

1.

c = [1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 22, 33, 44, 55, 66, 77, 88, 99]
c.sort(key=str)
print(c)
c = [1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 22, 33, 44, 55, 66, 77, 88, 99]
c = sorted(c, key=str)
print(c)

PS: Эти варианты равнозначны.

Вывод:

[1, 11, 2, 22, 3, 33, 4, 44, 5, 55, 6, 66, 7, 77, 8, 88, 9, 99]
→ Ссылка