Tenho uma lista que contém outras listas com dados referentes a nome, idade e altura de várias pessoas:
pessoas =[['PAULO',75,1.74],['ANDRE',15,1.87],['PEDRO',26,1.46],['JULIO',75,1.78],['PAULO',84,1.88],['JOÃO',34,1.56],['SERGIO',88,1.74]]
Feito isso, eu criei umforpara encontrar pessoas com nomes repetidos.Caso encontre um nome igual, ele compara a idade. Se essa pessoa com o mesmo nome for mais velha, ele substitui a idade e a altura dessa pessoa com o mesmo nome, criando assim uma nova lista (l).Ou seja, eu não quero nomes repetidos na lista. Caso haja, ele deixa na nova lista a pessoa que for mais velha, com sua respectiva idade.
Esse foi meu código:
l =[]for i in pessoas:if pessoas[i][0]notin l:#SE NÃO TIVER NENHUMA PESSOA COM ESSE NOME, É INSERIDO OS DADOS DA PRIMEIRA PESSOA
l.append(i)else:
idadeindex = l.index(pessoas[i][0])#SE JÁ TIVER ESSE NOME, Ó CÓDIGO PROCURA O INDEX DO NOME QUE já ESTA DENTRO DA LISTAif l[idadeindex][1]< pessoas[i][1]:#SE A IDADE DE QUEM ESTA DENTRO DA LISTA FOR MENOR DA PESSOA QUE ESTÁ FORA
l[idadeindex][1]= pessoas[i][1]#POR FIM, ELE SUBSTITUI A IDADE E A ALTURA, MATENDO O NOME
l[idadeindex][2]= pessoas[i][2]print(l)
Ele volta esse erro:
TypeError: list indices must be integers or slices,not list
Sou novato em Python e não consigo fazer meu código funcionar. Alguém consegue pensar em uma forma mais fácil de fazer isso?
Pergunta
Jonatas Cavalini
Boa noite!
Tenho uma lista que contém outras listas com dados referentes a nome, idade e altura de várias pessoas:
Feito isso, eu criei um
for
para encontrar pessoas com nomes repetidos. Caso encontre um nome igual, ele compara a idade. Se essa pessoa com o mesmo nome for mais velha, ele substitui a idade e a altura dessa pessoa com o mesmo nome, criando assim uma nova lista (l). Ou seja, eu não quero nomes repetidos na lista. Caso haja, ele deixa na nova lista a pessoa que for mais velha, com sua respectiva idade.Esse foi meu código:
Ele volta esse erro:
Sou novato em Python e não consigo fazer meu código funcionar. Alguém consegue pensar em uma forma mais fácil de fazer isso?
Link para o comentário
Compartilhar em outros sites
1 resposta a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.