Filme sortieren mit Python?
Hey
Ich helfe gerade in der Bibliothek in der Schule ca. 7000 Filme zu sortieren. Ich wollte mal fragen ob mir jemand helfen kann... Ich würde gerne ein Python script schreiben wo ich nur die Filmnamen einfügen muss und dann werden die Filme in der richtigen Alphabetischen Reihenfolge sortiert. Bedeutet auch dass wenn 2 Filme mit "A" anfangen dass das Programm dann zum zweiten Buchstaben gehen soll bis alle Filme perfekt sortiert sind. Alle Filme mit A müssen nämlich auch nochmals unterteilt werden und heisst das man solange im Filmnamen weitergehen muss und alphabetisch sortieren muss bis es Perfekt ist. Wenn ein Film "Das alte" und der andere "Das deutsche" heisst dann muss das Programm bis zum vierten Buchstaben weitergehen und dann das a und das d unterteilen.... ich hoffe ihr versteht was ich meine... Ich wollte fragen ob mir jemand Tipps geben kann oder eine Website gibt wo ich ein ähnliches script bereits finden kann.
Danke schonmal im voraus
4 Antworten
Eien lexikographische Ordnung der Strings herzustellen ist Pille Palle. Das macht jede Sprache von Natur aus, wobei es ein wenig umständlicher ist, wenn man volle I18N möchte.
Deine Probleme müssen also eigentlich an anderer Stelle liegen.
Es spricht prinzipiell nichts gegen Python, ist dort auch nur ein5-zeiler und wenn man kein sort Utility zur Hand hat, dann ist das bequem.
Immerhin honoriert sort die locale, das ist eine gute Nachricht.
Wieso in Python? Also umständlicher geht es nicht?
Einfach Windows Explorer "Nach Namen Sortieren lassen"
Sowas?
filme = ["Babycon 5", "Atlantis", "Alcatraz", "Derrick", "Jurassic Park", "Der Pate"]
for film in sorted(filme):
print(film)
Die Ausgabe ist dann:
Alcatraz
Atlantis
Babycon 5
Der Pate
Derrick
Jurassic Park
... oder sollen die Filme in Ordner sortiert werden und das Programm muss die Ordnerstruktur erstellen oder sowas?
Ich verstehe das Problem nicht wirklich...
Ich würde gerne ein Python script schreiben wo ich nur die Filmnamen einfügen muss
... die kannst du auch von der Platte lesen - entweder aus dem Dateinamen oder den EXIF-Daten!
Jede alphabetische Sortierung in jeder Programmiersprache macht das so..
Das Problem ist das es nicht weiter Sortiert... Es sortiert nur den ersten Buchstaben... es sollte aber den ersten sortieren... wenn es mehrere mit dem gleichen Anfangsbuchstaben gibt sollte es innerhalb dieser Gruppierung dann zum nächsten Buchstaben usw. bis alle mit dem gleichen Anfangsbuchstaben in der Perfekten Reihenfolge sind...
Dann hab ich keine Ahnung was du falsch machst. Bei mir hat die alphabetische Sortierung bisher immer richtig funktioniert ;)
dict ={
"L1" : ["ABC" , "BAC" , "CBA" , "ACB"],
}
print("\nBefore Sorting: ")
for x in dict.items():
print(x)
print("\nAfter Sorting: ")
for i, j in dict.items():
sorted_dict ={i:sorted(j)}
print(sorted_dict)
Außerdem darf deine Variable nicht dict heißen! Nenn die mal d dann geht es!
oh lol xD... mit list klappts xD danke xD
Das Problem ist der Variablenname dict - python kommt da durcheinander denn dict ist ein Python-Schlüsselwort!
Dein Code ist allerdings alles andere als gut - vor allem ist dein Beispiel nicht selbsterklärend und keiner will darüber nachdenken müssen warum du was machst...
Ein Beispiel:
filme={
"Geo" : ["Der Globus" , "Equador" , "Argentinien - Land der ..."],
"Bio" : ["Der Mensch" , "Unsere Umwelt" , "Das Krokodil"]
}
print("\nBefore Sorting: ")
for kat_liste in filme.items():
print(kat_liste)
print("\nAfter Sorting: ")
for kat, liste in filme.items():
sortierte_kat_liste = { kat : sorted(liste) }
print(sortierte_kat_liste)
... jetzt wird klar was was ist und warum ein Dict und keine Liste verwendet wird!
Außerdem sorgen sinnvolle Variablennamen dafür das man nicht in Konflikt mit Schlüsselwörtern kommt.
PS.: So werden zB die Kategorien nicht sortiert!
Sehe ich auch so.
Zumal ich hier kein Python nutzen würde, sondern einfach eine Tabellenkalkulation ... oder wenn es denn ein Skript sein muss: