Ir para conteúdo
Fórum Script Brasil
  • 0

Encontrar valores repetidos em uma lista e inserir outro valor em seu lugar com Python


Jonatas Cavalini

Pergunta

Boa noite!

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 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:

l = []
for i in pessoas:
    if pessoas[i][0] not in 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 LISTA
        if 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?

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

não passe o i como index, use i como uma lista, ou use enumerate

24 minutos atrás, Jonatas Cavalini disse:
for i in pessoas:
    if pessoas[i][0] not in l:
for i in pessoas:
    if i[0] not in l:
for pos, i in enumerate(pessoas):
    if pessoas[pos][0] not in l:

 

Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...