Bonsoir,
Je vous présente mon problème simplifié. Je dispose d'une liste telle que :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
[[['baba', 1, 25.2, 36.4], ['chouba', 236, 25.7, 48.6], ['touti', 63, 25.8, 36.9], ['quanti', 27, 58.4, 12.9]], [['baba', 9, 15.2, 63.8], ['touti', 653, 75.8, 636.9], ['quanti', 287, 588.4, 126.9]], [['baba', 12, 58.2, 326.4], ['chouba', 23, 2.8, 4.6], ['loula', 65, 36.1, 2514.3], ['touti', 683, 2.8, 4.9], ['quanti', 7, 5.4, 2.9]]]
Je ne veux récupérer que les éléments dont le premier terme est commun, c'est-à-dire :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
[[['baba', 1, 25.2, 36.4], ['touti', 63, 25.8, 36.9], ['quanti', 27, 58.4, 12.9]], [['baba', 9, 15.2, 63.8], ['touti', 653, 75.8, 636.9], ['quanti', 287, 588.4, 126.9]], [['baba', 12, 58.2, 326.4], ['touti', 683, 2.8, 4.9], ['quanti', 7, 5.4, 2.9]]]
J'ai écrit ce petit programme mais cela me semble bien compliqué, non ?
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
16
17
18
19
20
21
22
23
24
25
26
27
28
liste_1 = [["baba",1,25.2,36.4],["chouba",236,25.7,48.6],["touti",63,25.8,36.9],["quanti",27,58.4,12.9]]
liste_2 = [["baba",9,15.2,63.8],["touti",653,75.8,636.9],["quanti",287,588.4,126.9]]
liste_3 = [["baba",12,58.2,326.4],["chouba",23,2.8,4.6],["loula",65,36.1,2514.3],["touti",683,2.8,4.9],["quanti",7,5.4,2.9]]
liste_origine = []
liste_origine.append(liste_1)
liste_origine.append(liste_2)
liste_origine.append(liste_3)
print(liste_origine)
 
prem = []
for k in range(len(liste_origine)):
    prem.append([])
    for i in range(len(liste_origine[k])):
        if liste_origine[k][i][0] not in prem:
            prem[k].append(liste_origine[k][i][0])
 
inter = set(prem[0]).intersection(*prem)
print("---------------------------")
print(inter)
print("---------------------------")
 
liste_defi=[]
for k in range(len(liste_origine)):
    liste_defi.append([])
    for i in range(len(liste_origine[k])):
        if liste_origine[k][i][0] in inter:
            liste_defi[k].append(liste_origine[k][i])
print(liste_defi)
Si vous avez plus simple (en fait, j'ai 12 listes de 400 et quelques sous-listes)...