1
votes

Accéder aux éléments de tuple dans une liste imbriquée python

Je suis nouveau en python, j'ai une liste avec une liste imbriquée et à l'intérieur elle contient des tuples qui ressemblent à ci-dessous

for data in list:
    file= data[2]
    text_file= open(file,'r').readlines()
    if data[0], data[1] in text_file:
    #do something..

Je voudrais accéder à une liste à la fois, car exemple, j'ouvre le fichier test1.txt à partir du 1er index de la liste [2] et si la chaîne 'papa' et 'maman' est présente, filtrez le fichier et lisez-le de la même manière pour le fichier text2.txt si 'frère' et 'sœur' sont là, alors lisez et filtrez.

J'ai le code ci-dessous:

[('dad', 'mom', 'test1.txt')]
[('brother', 'sister', 'test2.txt')]
[('uncle', 'aunty', 'test3.txt')]
[('grandpa', 'grandma', 'test4.txt')]


0 commentaires

4 Réponses :


0
votes

On ne sait pas ce qui ne va pas pour vous puisque vous avez lu le nom de fichier correct 4 fois

Je suppose que vous devez quitter la boucle for si vous trouvez ce que vous cherchez avec l'instruction break.


0 commentaires

0
votes

Essayez de ne pas utiliser de mots clés tels que list

L=[[('dad', 'mom', 'test1.txt')],
[('brother', 'sister', 'test2.txt')],
[('uncle', 'aunty', 'test3.txt')],
[('grandpa', 'grandma', 'test4.txt')]]
for data in L:
  f=data[0][2]
  file1=open(f,"r")
  text_file=file1.read()
  if(data[0][0] and data[0][1] in text_file):
     #do something


4 commentaires

Si j'utilise votre méthode par exemple data [0] [2], cela donne une valeur «1» et indique que le fichier est introuvable. @Venkat


Hé désolé, j'ai modifié, pouvez-vous vérifier maintenant


désolé Cela ne fonctionne pas non plus @Trilok, si vous savez pouvez-vous me guider si sa liste de liste signifie? J'ai entendu dire que la liste imbriquée est meilleure que la liste tuple.


Pouvez-vous s'il vous plaît m'envoyer à quoi ressemblent vos données. Ce que j'ai fait, ce sont des listes composées de listes contenant des tuple. Pouvez-vous me faire savoir si ce n'est pas ce que vous recherchez?



1
votes

Voici comment je l'ai fait:

if i[0] == "dad":
    print(something)

J'ai itéré les éléments de la liste dans la plage du longueur de la liste: len (lis) . De cette façon, j prend les valeurs 0, 1, 2, 3 . Ensuite, j'ai utilisé une boucle for qui parcourt les éléments de la liste. Par conséquent, j prend les valeurs des éléments de lis comme lis [0], lis [1], lis [2], lis [3] code >.

Maintenant que j a les valeurs des éléments de la liste, nous pouvons utiliser i [(integer)] et accéder aux éléments des éléments de la liste à savoir, "papa", "maman", "test1.txt" , etc.

Nous pouvons donc appliquer des conditions à i [0] ou i [ 1] etc.

Par exemple:

lis=[[('dad', 'mom', 'test1.txt')],
    [('brother', 'sister', 'test2.txt')],
    [('uncle', 'aunty', 'test3.txt')],
    [('grandpa', 'grandma', 'test4.txt')]]
for i in range(len(lis)):
    for j in lis[j]:
        f = open(i[2])
        lines = f.read()
        if i[0] in lines and i[1] in lines:
            #do sth

J'espère que cela vous aidera!


0 commentaires

0
votes
lis=[[('dad', 'mom', 'test1.txt')],
    [('brother', 'sister', 'test2.txt')],
    [('uncle', 'aunty', 'test3.txt')],
    [('grandpa', 'grandma', 'test4.txt')]]
for i in lis:
    data=i[0][2]
    f=open(data,'r')
    file=f.read()
    if (i[0][0] and i[0][1])in file:
        pass

0 commentaires