Поскольку вы имеете дело с числами (которые в данном случае <10) и строками, вы можете упростить свой ключ и удалить <code>lambda:
>>> sorted(lst, key=str)
[0, 3, 7, 'E', 'J']
Или, что еще лучше,используйте list.sort
для сортировки на месте.
>>> lst.sort(key=str)
>>> lst
[0, 3, 7, 'E', 'J']
Каждый элемент будет отсортирован на основе значения ASCII значения str
.
Обратите внимание, что если вы имеете дело с числами> = 10 (весьма вероятно), то это решение в конечном итоге приведет к сортировке чисел лексикографически.Чтобы обойти это, вам в конечном итоге понадобится лямбда.
>>> lst.sort(key=lambda x: (isinstance(x, str), x)))
Что является решением @ jpp.