1
resposta

sort em lsita com tipos diferentes

Problema 1

teste = [1, 2, 3, 'a']
teste.sort()

Par ao código acima é gerado um erro pois os tipos são diferentes:

TypeError Traceback (most recent call last) in 1 teste = [1, 2, 3, 'a'] ----> 2 teste.sort()

TypeError: '<' not supported between instances of 'str' and 'int'

Pergunta1: existe um método que mer permita alterar os elementos para tipo "str" sem necessitar programar?

Problema 2:

data = py.read_data(arq_ent,  auto_detect_float = True , auto_detect_int = True, auto_detect_datetime =True )

data = py.read_data(arq_ent,  auto_detect_float = False , auto_detect_int = False, auto_detect_datetime =False )

Pergunta2: quando utilizo o comando imediatamente acima qualquer das opções True ou False para os respectivos parâmetros, não há diferença no comportamento e tambḿe não há como realizar o sort pelo mesmo motivo exposto no problema 1. Alguém poderia me ajudar?

1 resposta

Olá Jose,

Para ordenar esses valores você pode utilizar o parâmetro key da função sort() para passar uma função que transforma os valores antes de ordenar.

No exemplo abaixo passamos o key=str, assim cada elemento irá passar pela função str(), que é a função do python para converter um valor para string:

teste = [1, 5, 'b', 3, 'a']
teste.sort(key=str)

# Resultado
[1, 3, 5, 'a', 'b']

Sobre o read_data eu não conheço a função, qual é essa biblioteca py?