Selbstgeschriebener ZipWalker gibt nicht alle Items aus

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
Benutzeravatar
jtschoch
User
Beiträge: 400
Registriert: Freitag 6. Mai 2011, 15:40
Kontaktdaten:

Hallo Pythonfreunde,

Problembeschreibung

Ich habe ein ZipWalker zusammengeschrieben, der die Liste die ich von den ZipModul erhalte, in eine Dictonary Struktur umwandelt. Leider habe ich in den Programm einen Denkfehler und ich finde ihn nicht wirklich. Könnt ihr mit vielleicht Tipps und Ansetze geben?

Ich wäre euch sehr Dankbar.

Skript

Das Skript findet ihr hier auf meiner Homepage:
http://www.develos.de/article/40/ZipWal ... gsversion)
Meine Webseite http://www.develos.de
Forum: http://www.develos.de/forum
Mein Minecraft-Server: jonel.minecraft.to [dynmap(:8123)] | Webseite: http://jonel-minecraft.tk
BlackJack

@jtschoch: Ich sehe da keinen Quelltext‽
Benutzeravatar
jtschoch
User
Beiträge: 400
Registriert: Freitag 6. Mai 2011, 15:40
Kontaktdaten:

Oh Sorry kommt dann gleich, habe nicht fran gedacht das ich den Artikel ausversehen mal überscrieben habe.
Meine Webseite http://www.develos.de
Forum: http://www.develos.de/forum
Mein Minecraft-Server: jonel.minecraft.to [dynmap(:8123)] | Webseite: http://jonel-minecraft.tk
Sirius3
User
Beiträge: 17749
Registriert: Sonntag 21. Oktober 2012, 17:20

@jtschoch: ich sehe den Sinn von »cache« nicht ganz. Du solltest an einigen Stellen »else« verwenden. Das Löschen von Elementen aus einer Liste ist meistens keine gute Idee und niemals wenn man gerade über diese Liste iteriert. Ansonsten habe ich das Konstrukt mit »memory« noch nicht ganz durchschaut. Parameter sollten keinen Defaultwert haben, wenn die Funktion sinnlos wird, wenn man den Parameter weg läßt.

Meinst Du das?

Code: Alles auswählen

def walk(files):
    result={}
    for filename in files:
        branch = result
        fileparts = filename.split('/')
        last=fileparts.pop()
        for part in fileparts:
            branch=branch.setdefault(part+'/',{})
        if last:
            branch[last]=None
    return result
Benutzeravatar
jtschoch
User
Beiträge: 400
Registriert: Freitag 6. Mai 2011, 15:40
Kontaktdaten:

Vielen Dank für den Ansatz, da werde ich mir Anregungen holen.

Also ist das mit einen Generator keine so gute Idee?
Meine Webseite http://www.develos.de
Forum: http://www.develos.de/forum
Mein Minecraft-Server: jonel.minecraft.to [dynmap(:8123)] | Webseite: http://jonel-minecraft.tk
Benutzeravatar
jtschoch
User
Beiträge: 400
Registriert: Freitag 6. Mai 2011, 15:40
Kontaktdaten:

Keine Antwort?
Meine Webseite http://www.develos.de
Forum: http://www.develos.de/forum
Mein Minecraft-Server: jonel.minecraft.to [dynmap(:8123)] | Webseite: http://jonel-minecraft.tk
BlackJack

@jtschoch: Wo willst Du denn da einen Generator einsetzen?
Sirius3
User
Beiträge: 17749
Registriert: Sonntag 21. Oktober 2012, 17:20

@jtschoch: mit einem Generator kannst Du eine lineare Folge von Elementen erzeugen. Du willst aber verschachtelte Dictionaries, also nicht linear, ohne Reihenfolge, so ziemlich das Gegenteil, was ein Generator liefert.
Antworten