Deleting item from a list without knowing its index - Python

Asked

Viewed 38 times

0

Let’s say I have the following list:

lista_de_dados = [['nome', 'prioridade', 'hora', 'consultório', 'Número na fila'],
                  ['Gabriel', 'Comum', '16:30', 'Dermatologia', 1]
                  ['Gabrielle', 'Preferencial', '16:31', 'Dermatologia', 2]]

And I want to create a function to delete one of these lists inside the data list without deleting the others. For example, suppose I want to delete the list that contains Gabrielle’s information. I could do:

lista_de_dados = [['nome', 'prioridade', 'hora', 'consultório', 'Número na fila'],
                  ['Gabriel', 'Comum', '16:30', 'Dermatologia', 1],
                  ['Gabrielle', 'Preferencial', '16:31', 'Dermatologia', 2]]
lista_de_dados.__delitem__(2)
print(lista_de_dados)

Will show on screen:

[['nome', 'prioridade', 'hora', 'consultório', 'Número na fila'], ['Gabriel', 'Comum', '16:30', 'Dermatologia', 1]]

However, how can I delete the same item (the list with Gabrielle’s information) without knowing its position in the data list? For example, I only know what is inside the list that contains Gabrielle’s information but I don’t know her position regarding the data_list.

2 answers

2


You can identify the item you are interested in by the index and use the Try statement to deal with the error that arises when he does not find the item in the sublist. See:

lista_de_dados = [['nome', 'prioridade', 'hora', 'consultório', 'Número na fila'],
                  ['Gabriel', 'Comum', '16:30', 'Dermatologia', 1],
                  ['Gabrielle', 'Preferencial', '16:31', 'Dermatologia', 2]]

ans = input('Por favor, me dê o nome cujo os dados você pretende apagar:')
for i in range(len(lista_de_dados)):
    try:
        lista_de_dados[i].index(ans)
        lista_de_dados.__delitem__(i)
        print('A sublista {} foi deletada'.format(i))

    except:
        print('A sublista {} permanece em lista_de_dados'.format(i))

print(lista_de_dados)

1

You can use for loop and check whether the first item in the data list (name) is equal to the name the user entered. If equal, you can delete this data list using the list method remove(value). Example:

lista_de_dados = [['nome', 'prioridade', 'hora', 'consultório', 'Número na fila'],
                  ['Gabriel', 'Comum', '16:30', 'Dermatologia', 1],
                  ['Gabrielle', 'Preferencial', '16:31', 'Dermatologia', 2]]

nome = input('Nome do perfil que será apagado:')

for perfil in lista_de_dados:

    if perfil[0] == nome:
        lista_de_dados.remove(perfil)
        break

print(lista_de_dados)

Browser other questions tagged

You are not signed in. Login or sign up in order to post.