Я пишу ниже, полагая, что знаю типы данных в списке, может быть неэффективным. Моя идея состоит в том, чтобы разбить данный список на подлисты на основе типа данных, после этого сортировать каждый отдельный список и комбинировать.
input= ['b', 'a', 3, 'd', 'c']
strs = list(filter(lambda x : type(x) ==str,input))
ints = list(filter(lambda x: type(x) == int, input))
output = sorted(strs) + sorted(ints)