Rebonjour,

Je cherche à enrichir les elts d'une liste L1 avec des elts d'une seconde liste L2 selon un seul critère de comparaison avec cette même liste L2.

Ma liste L1 est (contient deux éléments) :

[[2, 2, 1, [1, 143, 1, 111, 1, 1], [[7, 0, [1, 1, 1, 111, 1, 1]], [8, 1, [143, 143, 1, 111, 1, 1], 3, 6, 23, [1, 13, 1], [1, 2, 3]], [9, -1, [1, 143, 1, 1, 1, 1]], [10, 0, [1, 143, 111, 111, 1, 1]]]], [3, 2, 2, [1, 17, 1, 13, 1, 1], [[11, -2, [1, 1, 1, 13, 1, 1]], [12, 1, [17, 17, 1, 13, 1, 1], 3, 6, 22, [1, 1, 1], [1, 2, 3]], [13, -1, [1, 17, 1, 1, 1, 1]], [14, -1, [1, 17, 13, 13, 1, 1]]]]]

Ma liste L2 est (4 elts):
[[1, [2, 130, 3, 8, 1, 1], 1, 1, 1, 1, 0, 0, 0, 0], [1, [6, 8, 9, 10, 1, 1], 1, 1, 1, 1, 0, 0, 0, 0], [1, [9, 11, 3, 8, 1, 1], 1, 1, 1, 1, 0, 0, 0, 0], [2, [5, 11, 9, 12, 1, 1], 1, 1, 1, 1, 0, 0, 0, 0]]

le critère pour ajouter le bn elt de L2 à celui qui lui correspond en L1 est la correspondance de valeurs entre la 3ème valeur de chaque elt de L1 avec le 1er de chaque elt de L2 , ce qui donne en python :


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
    for blk in L1:
 
        for clk in L2:
            print clk[0],"*****************",blk[2]
            if blk[2] == clk[0] : # les deux indices correspondent              
               #p_nnspl.remove(clk[0]) # on eleve le tag initial              
               print clk,"*****************",blk
               blk_nnspl1= copy.copy(blk) # on copie le domaine et ses caractéristiques dans une première liste
               cl1 = copy.copy(clk)
 
               cl1.pop(0) # je supprime l'indice dont je n'ai plus besoin
               clk1.append(cl1)
               blk_nnspl1.append(clk1)
               blk_nnspla.append(blk_nnspl1)
               continue
hélas ce programme est loin d'être performant, il en résulte bcp d'erreurs et je n'arrive pas à l'améliorer pr qu'il corresponde au but souhaité! Et je ne comprends pas pourquoi il ne marche pas correctement!
Auriez vous une idée de ce qui cloche?

Merci.
M.