Verschachtelte Dictionarys - Value ersetzen
Verfasst: Dienstag 29. Juli 2014, 21:10
Hallo Leute,
ich hoffe Ihr könnt mir helfen.
Ich will auch gar nicht groß herum reden sondern gleich zum Thema kommen.
Ich habe als Eingabeformat ein paar JSON Dokumente mit verschachtelten Dictionarys.
Aus diesem Dictionary habe ich bestimmte Keys heraus gelesen und auch abgespeichert.
Die Ebenen der Dictionarys sind immer unterschiedlich aber ich weiß in welche Ebene ich muss und kennen auch die jeweiligen Keys.
Bsp:
Ich weiß also, wie schon geschrieben, meine Keys und möchte jetzt die jeweilige Value ersetzen:
Nun sind die Keys nicht immer in der dritten Ebene sondern manchmal auch in der 2., 4. etc. und ich möchte die Values ganz unabhängig ersetzen.
Ich weiß leider nur nicht wie. Das einzige was mir eingefallen wäre ist eval aber die Lösung gefällt mir nicht.
Ich hoffe ich habe es ausreichend erklärt und Ihr versteht mein Problem .^^
Habt ihr vllt. eine Lösung?
Habe ich vllt. irgendetwas übersehen? :K
Danke schonmal für eure Hilfe.
ich hoffe Ihr könnt mir helfen.

Ich will auch gar nicht groß herum reden sondern gleich zum Thema kommen.
Ich habe als Eingabeformat ein paar JSON Dokumente mit verschachtelten Dictionarys.
Aus diesem Dictionary habe ich bestimmte Keys heraus gelesen und auch abgespeichert.
Die Ebenen der Dictionarys sind immer unterschiedlich aber ich weiß in welche Ebene ich muss und kennen auch die jeweiligen Keys.
Bsp:
Code: Alles auswählen
# Dictionary
dn = {
"1": "Test_1",
"2": "Test_2",
"3": {
"3.1": "Test_3.1",
"3.2": "Test_3.2",
"3.3": {
"3.3.1": "Test_3.3.1"
}
}
# Ausgabe
dn["3"]["3.3"]["3.3.1]
>>> Test_3.3.1
Code: Alles auswählen
dn["3"]["3.3"]["3.3.1] = "Test"
Ich weiß leider nur nicht wie. Das einzige was mir eingefallen wäre ist eval aber die Lösung gefällt mir nicht.
Code: Alles auswählen
# Mir bekannte Keys zu meiner gesuchten Ebene
dict_keys = ["3", "3.3", "3.3.1"]
# Dict-Abfrage als Stinge "bauen"
select = str(dictonary)
for dict_key in dict_keys:
select += "[dict_key]"
# Dict-Value ersetzen
eval(select) = "Test"
Habt ihr vllt. eine Lösung?
Habe ich vllt. irgendetwas übersehen? :K
Danke schonmal für eure Hilfe.
