Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 08/11/2017, à 12:23

Hizoka

[python3] Dictionnaires imbriqués

Bonjour à vous,

je rencontre un questionnement, je vais donc vous présenter ma situation actuelle avec une simplification poussée :

SuperDico = {}

def test(Key, Value):
  SuperDico[Key] = Value

test("oui", 1)

Ça fonctionne bien smile

Mais maintenant si je souhaite modifier un dictionnaire imbriqué, comment pourrais je faire via ma fonction ?
Car évidemment, cela ne fonctionne pas :

SuperDico = {}
SuperDico["patapof"] = {}

def test(Key, Value):
  SuperDico[Key] = Value

test("patapof/oui", 1)

Alors il est évident que ma fonction fait bien plus de choses que dans l'exemple smile

Une idée ?

Merci à vous !


KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github

Hors ligne

#2 Le 08/11/2017, à 12:41

pingouinux

Re : [python3] Dictionnaires imbriqués

Bonjour,
Je ne suis pas certain d'avoir bien compris ce que tu voulais faire.
Peut-être ceci ?

SuperDico = {}
SuperDico["patapof"] = {}

def test(Key, Index, Value):
  SuperDico[Key][Index] = Value

test("patapof","oui", 1)

print(SuperDico)

qui donne ce résultat

{'patapof': {'oui': 1}}

Hors ligne

#3 Le 08/11/2017, à 12:59

Hizoka

Re : [python3] Dictionnaires imbriqués

Oui mais ça c'est bien trop facile tongue

Je cherche un moyen pour qu'il s'adapte automatiquement smile

Je ne sais pas si ça sera dans un dictionnaire imbriqué ni même le nombre d'imbrication...

Ca serait une sacrée simplification de mon code, s'il est capable de détérminer tout seul la profondeur.

et en écrivant, je me dis que si je fais un truc du genre :
la fonction teste split la Key via des / (Key1/Key2/Key3)...
En fonction du nombre de valeur il peut comprendre l'imbrication...

Ca te parait bien ça ?


KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github

Hors ligne

#4 Le 08/11/2017, à 13:31

pingouinux

Re : [python3] Dictionnaires imbriqués

Ceci ?

SuperDico = {}

def test(Key, Value):
  keys=Key.split('/')
  Dico=SuperDico
  for key in keys[:-1]:
     if key not in Dico: Dico[key]={}
     Dico=Dico[key]
  Dico[keys[-1]]=Value

test("patapof/ptet_ben_qu_oui/oui", 1)
test("patapof/ptet_ben_qu_oui/non", 2)
test("patapif/ptet_ben_qu_non", 3)

print(SuperDico)

dont voici le résultat :

{'patapif': {'ptet_ben_qu_non': 3}, 'patapof': {'ptet_ben_qu_oui': {'oui': 1, 'non': 2}}}

Hors ligne

#5 Le 08/11/2017, à 13:37

Hizoka

Re : [python3] Dictionnaires imbriqués

Ca semble pas mal, mieux que ce que j'ai fait smile
je fais des tests et je reviens.
merci.


KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github

Hors ligne