redundante einträge

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
roakin
User
Beiträge: 26
Registriert: Montag 30. April 2007, 09:31

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]
BlackJack

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. :-)
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

BlackJack 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.
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 anzuschauen :-)
roakin
User
Beiträge: 26
Registriert: Montag 30. April 2007, 09:31

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
BlackJack

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?
roakin
User
Beiträge: 26
Registriert: Montag 30. April 2007, 09:31

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
Antworten