ich weiß das thema ist schon öfter behandelt worden, aber ich habe leider so eine komplizierte verschachtelung und komme daher nicht mehr weiter. momentan hab ich in einer 2 dictionaries und eine liste verschachtelt, also
result[key1][title] = ['Title 1', 'Title 2', 'Title 3']
result[key1][teaser] = ['Teaser 1', 'Teaser 2', 'Teaser 3']
result[key1][text] = ['Text 1', 'Text 2', 'Text 3']
...
jetzt kann es aber sein, dass bei einem anderen schlüssel genau die gleichen werte vorkommen
result[key2][title] = ['Title 1', 'Title 2', 'Title 3']
result[key2][teaser] = ['Teaser 1', 'Teaser 2', 'Teaser 3']
result[key2][text] = ['Text 1', 'Text 2', 'Text 3']
gibt es da eine elegante möglichkeit die überflüssigen einträge zu entfernen? ich blick da einfach nicht mehr durch. [/code]
redundante einträge
Dann solltest Du vielleicht mal über die Datenstruktur nachdenken. Wenn man Dictionaries und Listen tiefer als zwei Ebenen verschachtelt, wird es meistens unübersichtlich und man sollte Objekte in Betracht ziehen.
Ich bin mir auch nicht so ganz sicher was hier variabel und was fest ist. Meinst Du beim zweiten Index wirklich Namen oder sollten das eigentlich Zeichenkettenliterale sein? Ist in den Dictionaries noch etwas anderes als die drei Einträge?
Gehören 'Title n', 'Teaser n' und 'Text n' für ein gegebenes `n` jeweils zusammen? Wenn ja, warum sind sie dann über drei Listen verteilt?
Wenn man einen doppelten Eintrag gefunden hat, welchen Schlüssel soll man dann nehmen? Wo kommt der her? Ist der künstlich? Würde eine Objektidentität dafür auch gehen? Dann könnte man sich den Schlüssel und das Dictionary vielleicht sparen und ein `set()` nehmen.
Fragen über Fragen.
Ich bin mir auch nicht so ganz sicher was hier variabel und was fest ist. Meinst Du beim zweiten Index wirklich Namen oder sollten das eigentlich Zeichenkettenliterale sein? Ist in den Dictionaries noch etwas anderes als die drei Einträge?
Gehören 'Title n', 'Teaser n' und 'Text n' für ein gegebenes `n` jeweils zusammen? Wenn ja, warum sind sie dann über drei Listen verteilt?
Wenn man einen doppelten Eintrag gefunden hat, welchen Schlüssel soll man dann nehmen? Wo kommt der her? Ist der künstlich? Würde eine Objektidentität dafür auch gehen? Dann könnte man sich den Schlüssel und das Dictionary vielleicht sparen und ein `set()` nehmen.
Fragen über Fragen.
Und wenn du (roakin) dir über all die Antworten auf die Fragen klar geworden bist, wenn dies nicht schon der Fall ist, wäre es wohl mal an der Zeit sich ER-Diagramm anzuschauenBlackJack hat geschrieben:Wenn man einen doppelten Eintrag gefunden hat, welchen Schlüssel soll man dann nehmen? Wo kommt der her? Ist der künstlich? Würde eine Objektidentität dafür auch gehen? Dann könnte man sich den Schlüssel und das Dictionary vielleicht sparen und ein `set()` nehmen.
ja ich weiß dass das jetzt total unübersichtlich geworden ist. das problem ist dass das ganze eben mit der zeit gewachsen ist. ich hab am anfang nicht abschätzen können wie kompliziert das werden wird ... und das ganze jetzt mit objekten wieder umzuschreiben ist leider ein riesenaufwand. das problem ist eben das alles komplett dynamisch is ... also jeder dictionary key und zusammengehören tun immer der erste eintrag von title, teaser, text ... sie sind deswegen in verschiedene listen verteilt weil jedes element aus einer webseite geparst wird. und da eben zuerst alle titel, dann alle teaser und dann erst alle texte geparst werden können
Den Aufwand solltest Du auf Dich nehmen. Ansonsten wirst Du viel mehr unübersichtlichen Quelltext schreiben müssen, was die Situation *noch* schlechter macht.
Und das die Daten nacheinander geparst werden müssen, hindert einen ja nicht daran sie danach anders zu organisieren.
Wie sehen denn die Schlüssel in den verschachtelten Dictionaries aus? Also `key1`, `title`, `teaser` und `text`? Nochmal die Frage: sind die letzten drei wirklich als *Namen* zu verstehen?
Und das die Daten nacheinander geparst werden müssen, hindert einen ja nicht daran sie danach anders zu organisieren.
Wie sehen denn die Schlüssel in den verschachtelten Dictionaries aus? Also `key1`, `title`, `teaser` und `text`? Nochmal die Frage: sind die letzten drei wirklich als *Namen* zu verstehen?
habs jetzt doch umorganisiert ... und außerdem überprüf ich jetzt schon beim füllen der datenstrukturen ob es schon einen gleichen eintrag gibt ... damit spar ich mir ja doch auch einiges an unnötigen rechenschritten.
aber trotzdem natürlich vielen dank für eure hilfe
aber trotzdem natürlich vielen dank für eure hilfe