J'ai une liste, qui est initialement vide, mais l'utilisateur ajoute des sous-listes à la liste.

Je dois ensuite rechercher l'index de la sous-liste spécifique, en utilisant les 2 premiers éléments de la sous-liste. cela fonctionne si les deux premiers éléments sont les deux seuls éléments, mais pas lorsque l'utilisateur a ajouté plus de détails dans la sous-liste.

J'ai besoin d'un moyen de rechercher l'index de la sous-liste en utilisant uniquement les deux premiers éléments. Des idées?

database=[] 
fn=input("Enter the students first name:")
sn=input("Please enter the students surname:")

rr=(any(fn and sn in i for i in database))        

if rr==True:
 print("true")
 pos=(database.index([fn, sn]))
1
Yasmin Paksoy 16 mars 2019 à 16:46

2 réponses

Meilleure réponse

Vous devez trouver une sous-liste spécifique pour la donner à la fonction index par exemple en modifiant le vérificateur pour retourner la sous-liste

for sublist in database:
  if fn in sublist and sn in sublist:
    index_sublist = sublist
    break

Puis recherchez l'index par sous-liste trouvée

pos = (database.index(index_sublist))

Au fait, vérifiez cela

fn and sn in i for i in database

Dans ce cas, vous vérifiez si fn existe et si sn est dans i. Essayer

fn in i and sn in i for i in database

En outre, il existe des moyens plus efficaces de stocker vos valeurs de tâche, par exemple dans dict, qui ont tuple(sublist[:2]) comme clés et sous-listes comme valeurs

0
cheshire cat 16 mars 2019 à 14:20

Commutateur:

pos=(database.index([fn, sn]))

Avec ça:

pos=[i for i in range(len(database)) if database[i][0]==sn and database[i][1]==fn]

Cela renvoie les positions de toutes les sous-listes de la liste pour lesquelles le premier élément est fn et le deuxième élément est sn

0
Shay Lempert 16 mars 2019 à 13:58