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:
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"
            }
        }
    }
}
et je souhaite récupérer tous les jobs de la table1 qui ont un nodeid égal à "riri" dans array.

pour cela j'ai fait un array "cible" comme ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
path=['table1','listetraitements','job.*','nodeid']
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
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)
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
 
##CODE
res=GetKey(path,dico_test,'riri')
print(res)
 
#Console
nodeid
nodeid
mais je voudrais avoir les clef parents des nodeid càd "job1" et "job3"

J'avoue que je suis à court d'idée :/

Je vous remercie par avance pour votre aide

Cordialement