Bonjour,
Je bloque sur une méthode pour récupérer une clef parent à partir d'un chemin cible dans un dictionnaire.
Explication:
voici mon dictionnaire de test:
et je souhaite récupérer tous les jobs de la table1 qui ont un nodeid égal à "riri" dans array.
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
29 dico_test={ "table1":{ "listetraitements":{ "job1":{ "nodeid":"riri" }, "job2":{ "nodeid":"toto" }, "job3":{ "nodeid":"riri" } } }, "table2":{ "listetraitements":{ "job1":{ "nodeid":"riri" }, "job2":{ "nodeid":"toto" }, "job3":{ "nodeid":"tata" } } } }
pour cela j'ai fait un array "cible" comme ceci :
j'ai commencé par faire une fonction récursive qui en fonction de mon path va parcourir le dico :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 path=['table1','listetraitements','job.*','nodeid']
Alors ca fonctionne car je vois dans la console ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 def GetKey(liste,dico,*args): value=args[0] if len(liste) == 0 : return dico else: for key in dico.keys(): if re.match(liste[0],key): if dico[key] == value: print(key) else: dico[key]=GetKey(liste[1:],dico[key],value)
mais je voudrais avoir les clef parents des nodeid càd "job1" et "job3"
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 ##CODE res=GetKey(path,dico_test,'riri') print(res) #Console nodeid nodeid
J'avoue que je suis à court d'idée :/
Je vous remercie par avance pour votre aide
Cordialement
Partager