"append" bei Verschachtelung

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.
Antworten
Holger Chapman
User
Beiträge: 35
Registriert: Samstag 12. Juli 2014, 01:59

Hallo,

ich brauche in einem Python-2-Skript eine Datenstruktur, die den Inhalt eines Verzeichnisses abbildet. Dafür verwende ich ein Dictionary, in dem der absolute Pfad des Verzeichnisses der Schlüssel (key) sein soll, und der Wert (value) des Verzeichnisses soll eine Liste mit zwei Unterlisten sein: 1. Unterverzeichnisse und 2. Dateien. Also zum Beispiel:

Code: Alles auswählen

directory={"/testdir" : [["subdir1", "subdir2"], ["file1", "file2"]]}
Jetzt möchte ich zu einer der beiden Unterlisten einen Wert hinzufügen, zum Beispiel eine weitere Datei. Ich hatte gehofft, dass Folgendes funktioniert:

Code: Alles auswählen

directory["/testdir"] = [directory["/testdir"][0], directory["/testdir"][1].append("file3")]
Das führt aber leider nicht zu der folgenden (gewünschten) Situation,

Code: Alles auswählen

{'/testdir': [['subdir1', 'subdir2'], ['file1', 'file2', 'file3']]}
sondern zu folgender Situation:

Code: Alles auswählen

{'/testdir': [['subdir1', 'subdir2'], None]}
Was kann ich tun, um den Dateinamen zusätzlich in die Liste der Dateinamen in meinem Test-Verzeichnis aufzunehmen?

Vielen Dank!


Holger
Benutzeravatar
MagBen
User
Beiträge: 799
Registriert: Freitag 6. Juni 2014, 05:56
Wohnort: Bremen
Kontaktdaten:

So geht's

Code: Alles auswählen

directory={"/testdir" : [["subdir1", "subdir2"], ["file1", "file2"]]}
directory["/testdir"][1].append("file3")
Holger Chapman hat geschrieben:Ich hatte gehofft, dass Folgendes funktioniert:
directory["/testdir"] = [directory["/testdir"][0], directory["/testdir"][1].append("file3")]
Hier fügst Du nichts zum Eintrag directory["/testdir"] hinzu, sondern ersetzt den ganzen Eintrag. Das None ist dann eben der Rückgabewert von append.
a fool with a tool is still a fool, www.magben.de, YouTube
Holger Chapman
User
Beiträge: 35
Registriert: Samstag 12. Juli 2014, 01:59

MagBen hat geschrieben:So geht's [...]
Ja, funktioniert. Super.

Danke!


Holger
Antworten