Auf ein verschachteltes dictionary zugreifen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
HarryH
User
Beiträge: 266
Registriert: Freitag 23. Mai 2003, 09:08
Wohnort: Deutschland

Auf ein verschachteltes dictionary zugreifen

Beitragvon HarryH » Montag 27. September 2004, 11:49

Hallo,

Ich möchte gerne auf ein verschachteltes Dictionary zugreifen.
z.B

Code: Alles auswählen

d={"Pos": {"Bearbeitung": {"Programm": {"124":"0", "125":"1", "126":"2", "127":"3"}}}}

Zur Verfügung steht mir eine Liste der Schlüssel:
z.B.

Code: Alles auswählen

schluessel=["Pos", "Bearbeitung", "Programm"]

Ich kann nun natürlich so darauf zugreifen:

Code: Alles auswählen

d[schluessel[0]][schluessel[1]][schluessel[2]]


Aber die Menge der Schlüssel variiert in meinem Programm. So müsste ich für jede Schlüsselanzahl einen eigenen Indexstring schreiben mit dem ich dann auf mein ditionary zugreifen kann.
Hat jemand eine Idee das besser zu lösen? Könnte man diesen Indexstring auch über eine Schleife konstruieren?
Ich habe mich schon daran versucht, bin aber noch auf keine bessere Möglichkeit gekommen. Vielleicht hat von euch jemand eine Idee? :D
Gruß, Harry
Benutzeravatar
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Beitragvon Dookie » Montag 27. September 2004, 12:47

Hi HarryH,

Code: Alles auswählen

def get_from_path(d, path):
    result = d
    for key in path:
        result = result[key]
    return result

d={"Pos": {"Bearbeitung": {"Programm": {"124":"0", "125":"1", "126":"2", "127":"3"}}}}

schluessel=["Pos", "Bearbeitung", "Programm"]

wert = get_from_path(d, schluessel)
print wert


Gruß

Dookie

Code: Alles auswählen

#!/usr/bin/env python
import this
HarryH
User
Beiträge: 266
Registriert: Freitag 23. Mai 2003, 09:08
Wohnort: Deutschland

re:

Beitragvon HarryH » Montag 27. September 2004, 12:53

Hallo Dookie,

Super! Das ist genau das was ich brauche und ist eigentlich ganz einfach! :oops:
Nochmals vielen Dank, auch weil es so schnell ging!
Gruß, Harry

Wer ist online?

Mitglieder in diesem Forum: Bing [Bot]